一个关于 iOS 版 Facebook SDK 的简短问题。我正在尝试为用户实现向我的应用授予扩展权限的功能。
虽然当用户接受扩展权限请求(从用户重定向到的 Facebook iOS 应用程序)时代码工作正常,但我无法检测用户何时返回到应用程序,同时既没有接受权限,或点击取消然后返回应用程序。
如果我单击“取消”并将多任务处理回到应用程序,则不会记录任何内容,也不会在屏幕上显示任何内容。当我再次尝试重新授权时,Facebook SDK 抛出异常:
FBSession: It is not valid to reauthorize while a previous reauthorize call has not yet completed.
虽然我可以捕捉到异常,但它仍然无济于事,因为我不知道如何停止之前的调用以允许用户再次尝试重新授权。
这是我目前使用的代码:
@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 似乎不会以任何方式提醒应用程序这种情况。
最佳答案
从您的应用程序的委托(delegate)中,当 - (void)applicationDidBecomeActive:(UIApplication*)application
被调用时,您需要调用事件 session 的 handleDidBecomeActive
方法。执行此操作后,将调用与您的 reauthorizeWithPublishPermissions
调用关联的完成处理程序,并将提供适当的错误。
- (void)applicationDidBecomeActive:(UIApplication*)application
{
[[FBSession activeSession] handleDidBecomeActive];
}
关于objective-c - 如何取消之前的 Facebook 重新授权调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257821/