请帮我解决这个问题!我想创建应用登录 facebook,如果设备安装了 Facebook 应用,我的应用会在用户登录 Facebook 时调用 Facebook 应用,如果没有安装 Facebook 应用,我的应用会显示弹出登录视图,没有 sarafi?
问问题
2178 次
3 回答
2
如果您使用共享工具包,则转到 SDK 中的 facebook.m 类,找到此方法:
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
然后替换你的最后一行:[self authorizeWithFBAppAuth:YES safariAuth:YES];
用这一行:[self authorizeWithFBAppAuth:YES safariAuth:NO;
&检查。
于 2013-01-10T03:50:56.757 回答
0
这将处理打开一个 facebook 会话。
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if (status == FBSessionStateOpen || status == FBSessionStateOpenTokenExtended)
{
NSLog(@"Logged in!");
}
}];
确保您的应用程序委托也处理回调 url。
- (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [FBSession.activeSession handleOpenURL:url];
}
于 2013-01-10T04:57:02.993 回答
0
如果您使用的是 Facebook SDK,您可以使用 FBSession 打开会话。
- (void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
// NSLog(@"openSessionWithAllowLoginUI:");
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_photos",
@"publish_actions",
@"read_stream",
@"friends_photos",
@"email" ,
nil];//You can add similar permissions according to your app.
[FBSession setActiveSession:[[FBSession alloc] initWithPermissions:permissions]];
[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
NSLog(@" state=%d",state);
// handle the completion handler...
}];
}
如果 Facebook 应用程序安装在您的手机中,这将打开它,如果您未登录,它将显示弹出窗口。如果您的设备中未安装本机应用程序,它将使用 safari。
在对 Facebook 执行任何操作之前,请始终使用以下命令检查 FBSession 是否打开并处于活动状态: if (FBSession.activeSession.isOpen)
于 2013-01-10T05:05:33.470 回答