当我打电话给facebook授权:它一直要求允许应用程序的权限

时间:2012-09-04 17:40:20

标签: ios facebook sdk

我正在使用facebook-ios-sdk。我基本上从appDelegate获取facebook,每次它点击我的viewController它调用这个方法:

- (void)openFacebook{
    appDelegate.facebook = [[Facebook alloc] initWithAppId:@"11234567892515" andDelegate:self];

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

    if (![appDelegate.facebook isSessionValid]) {
        NSArray *permissions = [[NSArray alloc] initWithObjects:
                                @"user_likes", 
                                @"read_stream",
                                @"user_photos",
                                //@"user_about_me",
                                //@"email",
                                @"publish_stream",
                                @"publish_actions", 
                                nil];
        [appDelegate.facebook authorize:permissions];
        NSLog(@"Facebook session is valid"); 
        [appDelegate.facebook extendAccessTokenIfNeeded];
    } 




}

问题是......即使允许应用程序,它仍然会出现允许应用程序的对话框......

即使我已经授权,我怎样才能阻止它每次都要求我授权应用程序?请保持简单我不是天才谢谢:)。

1 个答案:

答案 0 :(得分:0)

我的猜测是你登录后没有存储AccessToken和ExpiryDate。

添加此项以查看您是否在UserDefaults

中拥有这些商店
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"%@", [defaults dictionaryRepresentation]);

在你的Facebook fbDidLogin方法中你有这样的感觉吗?

// Store session info.
    [[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"FBAccessTokenKey"];
    [[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"FBExpirationDateKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];