[英]How to post to Facebook without showing dialog?
我正在做一个阅读器应用程序,可以将文本发送到Facebook。 但是我在另一页中完成了登录Facebook的操作。 我有一个名为“ textpostingbtn
”的按钮和一个保存文本的textview。 我需要做的是,当用户点击按钮时,它将文本发布到Facebook而不显示登录对话框。 我对该按钮进行了一些验证,因此只有在用户登录后才启用该按钮。 我用于登录目的的链接 。
编辑:
- (IBAction)postGradesTapped:(id)sender {
//_posting = YES;
// If we're not logged in, log in first...
if (![_session isConnected]) {
self.loginDialog = nil;
_loginDialog = [[FBLoginDialog alloc] init];
[_loginDialog show];
_logoutButton.hidden = YES;
}
// If we have a session and a name, post to the wall!
//else if (_facebookName != nil) {
//[self postToWall];
//}
// Otherwise, we don't have a name yet, just wait for that to come through.
}
- (IBAction)logoutButtonTapped:(id)sender {
[_session logout];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FB_logged"];
_btnFacebookmain.enabled =NO;
}
#pragma mark FBSessionDelegate methods
- (void)session:(FBSession*)session didLogin:(FBUID)uid {
[self getFacebookName];
}
- (void)session:(FBSession*)session willLogout:(FBUID)uid {
_logoutButton.hidden = YES;
_facebookName = nil;
}
#pragma mark Get Facebook Name Helper
- (void)getFacebookName {
NSString* fql = [NSString stringWithFormat:
@"select uid,name from user where uid == %lld", _session.uid];
NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@"query"];
[[FBRequest requestWithDelegate:self] call:@"facebook.fql.query" params:params];
}
#pragma mark FBRequestDelegate methods
- (void)request:(FBRequest*)request didLoad:(id)result {
if ([request.method isEqualToString:@"facebook.fql.query"]) {
NSArray* users = result;
NSDictionary* user = [users objectAtIndex:0];
NSString* name = [user objectForKey:@"name"];
self.facebookName = name;
_logoutButton.hidden = NO;
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FB_logged"];
[_logoutButton setTitle:[NSString stringWithFormat:@"Facebook: Logout as %@", name] forState:UIControlStateNormal];
/*if (_posting) {
[self postToWall];
_posting = NO;
}*/
}
}
好了,您只需登录一次FB。 将访问令牌保存在您的NSUserDefaults中。 然后,当您想在FB上共享时,只需访问您的NSUserDefaults并获取访问令牌并使用该令牌进行共享。
用于将访问令牌存储在NSUserDefaults中
facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
以下是几个将指导您的链接
https://developers.facebook.com/docs/mobile/ios/build/
http://coffeeshopped.com/2011/01/saving-sessions-with-the-facebook-ios-sdk
关于SO的讨论
在iOS上的NSUserDefaults中保存Facebook access_token
要发布将发送给您的代码,请按以下按钮:
FBStreamDialog* dialog = [[[FBStreamDialog alloc] init] autorelease];
dialog.userMessagePrompt = @"Enter your message:";
dialog.attachment = [NSString stringWithFormat:@"I Love iOS"];
[dialog show];
这是参考链接。
http://www.raywenderlich.com/77/how-to-post-on-facebook-with-your-iphone-app
遵循本教程: https : //developers.facebook.com/docs/mobile/ios/build/如果您按照他们的说法进行操作,那么FB连接对于您的应用程序将是全局的。 使用appDelegate,您可以从应用程序中的任何视图控制器发布,阅读和执行您想做的任何事情
您可以为此使用图形API,这是教程:-https://github.com/reallylongaddress/iPhone-Facebook-Graph-API
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.