【问题标题】:When I call facebook authorize:permissions it keeps asking to allow the application当我调用 facebook authorize:permissions 时,它一直要求允许该应用程序
【发布时间】:2012-09-04 17:40:20
【问题描述】:

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




}

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

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

【问题讨论】:

    标签: ios facebook sdk


    【解决方案1】:

    我的猜测是您登录后不会存储 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];
    

    【讨论】:

    • 差不多就是这样。我没有正确检查 facebook 访问令牌和到期日期。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多