0

我将 facebook-ios-sdk 用于我的 iPhone 应用程序,并在用户按下按钮时启动授权屏幕。但我总是得到不同的授权屏幕。我在高级设置中启用了“增强的身份验证对话框”...

在此处输入图像描述

其他应用程序使用这个:

在此处输入图像描述

facebook = [[Facebook alloc] initWithAppId:@"167080433419201" andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
   facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
   facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

if (![facebook isSessionValid]) {
   NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_about_me",nil];
   [facebook authorize:permissions];
}
4

3 回答 3

0

如果用户的应用隐私列表中没有权限,OAuth 要求用户登录以获得授予的权限。登录并允许应用权限请求后,我们可以从重定向的 url中获取access_token 。

因此,您的情况是您必须先登录,并且您的 ios 测试应用程序可能已经存在于 facebook 应用程序隐私列表中。

第二个屏幕已经登录,但第一个屏幕没有。您应该采用 FBSessionDelegate 来存储 access_token 和到期日期。

- (void)fbDidLogin {
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

}
于 2012-05-07T01:37:56.703 回答
0

检查您在授权 facebook 时设置的权限。

这只是一个例子

NSArray *permissions = [[NSArray alloc] initWithObjects:
            @"user_likes", 
            @"read_stream",
            nil];
        [facebook authorize:permissions];

您可以在此处找到更多权限类型:https ://developers.facebook.com/docs/authentication/permissions/

于 2012-05-07T04:38:49.007 回答
0

我找到了解决方案,我尝试了不同的权限。但是授权屏幕需要一段时间才能切换到正确的屏幕......

于 2012-05-08T15:41:18.067 回答