【发布时间】:2012-09-04 06:21:36
【问题描述】:
关于 iOS 版 Facebook SDK 的简短问题。我正在尝试实现用户授予我的应用访问扩展权限的功能。
虽然当用户接受扩展权限请求(从用户被重定向到的 Facebook iOS 应用程序)时代码可以正常工作,但我无法检测到用户何时返回应用程序而没有接受权限,或单击取消然后返回应用程序。
如果我单击“取消”并将多任务返回应用程序,则不会记录任何内容,屏幕上也不会显示任何内容。当我再次尝试重新授权时,Facebook SDK 会抛出异常:
FBSession:在之前的重新授权调用尚未完成时重新授权无效。
虽然我可以捕捉到异常,但它仍然无济于事,因为我不知道如何停止之前的调用以允许用户再次尝试重新授权。
这是我目前正在使用的代码:
@try {
[[FBSession activeSession] reauthorizeWithPermissions:[self requiredPermissions]
behavior:FBSessionLoginBehaviorWithFallbackToWebView
completionHandler:^(FBSession *session, NSError *error) {
if (!error) {
[self fetchUserPermissionsWithCompletionHandler:^(BOOL extendedGranted) {
if (extendedGranted) {
[self setCanPostToActivityStream:YES];
}
}];
}
else {
NSLog(@"%@", [error localizedDescription]);
}
}];
}
@catch (NSException *exception) {
NSLog(@"%@", exception);
}
现在,问题不在于上面的代码 - 代码运行良好。我再次遇到的问题是当用户在允许权限后未成功返回应用程序时取消 previous 重新授权调用。 Facebook SDK 本身似乎并没有以任何方式提醒应用程序这种情况。
【问题讨论】:
-
你是否清除了你上次的会话?
-
老Q,但是你在实现 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 吗?
-
是的,我正在实施。如果不实施,Facebook 登录将无法工作。如果用户取消重新授权这是一个真正的问题,Facebook SDK 不会实际通知我!
-
约翰·罗杰斯,你能解决这个问题吗?如果是这样,你能告诉我你是怎么做到的吗?
标签: objective-c ios facebook