1

我正在使用 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];
    } 




}

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

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

4

1 回答 1

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];
于 2012-09-04T19:18:10.697 回答