Joh*_*ers 12 facebook objective-c ios
关于Facebook SDK for iOS的快速问题.我正在尝试为用户实现该功能,以授予我的应用程序访问扩展权限的权限.
当用户接受扩展的权限请求(从用户被重定向到的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);
}
Run Code Online (Sandbox Code Playgroud)
现在,问题不在于上面的代码 - 代码工作正常.我再次遇到的问题是,当用户在允许权限后没有成功返回应用程序时,取消之前的重新授权调用.Facebook SDK似乎并没有以任何方式提醒应用程序这种情况.
在App的委托中,- (void)applicationDidBecomeActive:(UIApplication*)application调用时,您需要调用活动会话的handleDidBecomeActive方法.完成此操作后,reauthorizeWithPublishPermissions将调用与您的调用关联的完成处理程序,并将提供相应的错误.
- (void)applicationDidBecomeActive:(UIApplication*)application
{
[[FBSession activeSession] handleDidBecomeActive];
}
Run Code Online (Sandbox Code Playgroud)