2

我正在借助 Facebook SDK (iOS) 实施我的项目。我遇到了一个奇怪的现象......

我首先放了 Facebook 对象的初始化代码:

self.facebook = [[Facebook alloc] initWithAppId:appID andDelegate:self];

然后我会检查令牌是否可用,如果没有,请转到我的登录视图...

然后我添加了一个按钮,该按钮将在我的应用程序委托中触发登录 Facebook 方法,并且我只调用了授权方法

- (void)LoginToFacebook
{
    NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",nil];
    [self.facebook authorize:permissions];
}

并用这个处理转换

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation
{
    // attempt to extract a token from the url
    return [self.facebook handleOpenURL:url];
}

我遇到的问题是,当我重置我的模拟器并运行项目时,起初一切都很好,我的登录页面显示出来了。当我按下登录按钮时,它首先要求我登录(正常),然后授权应用程序。但是,当我按下 Okay 按钮时(假设我之前已经授权过该应用程序),在程序中调用 fbDidLogin 时,会弹出另一个 safari 窗口并再次请求授权......

我一直在寻找解决方案,发现这个问题说不想将授权方法和提要对话框放在同一个地方。然而,在我的代码中我没有做这些事情(我确实有应用程序请求对话框代码,但我很确定它们没有放在同一个地方)。

此外,在我按了两次确定按钮后,它进入登录页面,错误代码为 400....,当我单击另一个获取用户朋友的按钮时,它成功了。

奇怪的现象是,如果我确实得到了用户的朋友和注销并再次登录,相同的代码只会弹出一个 safari 窗口进行授权.....

所以我一直很困惑,所以有人可以帮助我吗?

编辑

我刚刚发现,如果我不包含权限,应用程序运行良好,但如果我包含它,问题仍然存在,Safari在第一次登录时弹出两次......

4

0 回答 0