objective-c - 如何取消之前的 Facebook 重新授权调用?

标签 objective-c ios facebook

一个关于 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/

相关文章:

objective-c - 为什么/NSUInteger 会返回一个负数?

ios - NSPredicate比较两组和多对多关系

iphone - 点击时如何让 UIButton 执行我的类方法?

ios - 从 Appstore 下载但在本地加载时不会崩溃的应用程序内购买应用程序崩溃

facebook - 无法查看应用程序配置文件页面.... "The page you requested was not found"

objective-c - NSString 到 NSBezierPath 某些标准字体的奇怪字形

iphone - Apple 在 ios7 中用于数字键盘的字体是什么?

ios - 函数 '…'的隐式声明在C99上无效

android - facebook android sdk中使用的facebook api版本

javascript - 适用于 Facebook 可玩广告的 SDK