iphone - fbDidLogin 的问题从未调用过 iOS

标签 iphone objective-c ios fbconnect

我的应用在保存 access_token 时遇到问题。问题是,当 iPhone 没有安装 Facebook 应用程序时,safari 会处理这个问题,没有问题。但是一旦 iPhone 安装了 Facebook 应用程序。它只是不保存访问 token ,每次需要对 Facebook 执行某些操作时都会打开 Facebook 应用程序。然后它说,你已经给了......许可......

这就是我在 viewdidload 中所做的,以便第一次请求许可并从用户默认值接收访问 token :

facebook = [[Facebook alloc] initWithAppId:@"APPID"];


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

    NSArray* permissions =  [[NSArray arrayWithObjects:
                              @"read_stream", @"offline_access", nil] retain];

    if (![facebook isSessionValid]) {
        [facebook authorize:permissions delegate:self];
    }

这就是我在 fbdidlogin 中所做的:

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

但是对于某种方式,当 Facebook 应用程序控制时,这只是行不通......每次 View 确实加载时,它都会授权,再次加载。

有人知道吗?

谢谢!

顺便说一句:我还有以下行:

(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[controller facebook] handleOpenURL:url]; }

最佳答案

我刚遇到这个问题,相信我可能已经找到了您的解决方案。当您在 Facebook 上创建应用程序时,您必须编辑您的应用程序设置以允许本地 iOS 应用程序。选择的 ios 包 ID 必须与您正在创建的应用程序中的包 ID 完全匹配。 Facebook 声明他们会在授权您的应用程序之前检查这一点。有趣的是,如果您从设备中删除 facebook 应用程序,然后尝试使用网络浏览器对其进行身份验证,并且似乎完全绕过此“安全”。这就是乔斯解决方案“有效”的原因。 Facebook 不会发回错误消息,因此追踪起来很有趣。我想我会把这个答案放在那里,希望能为 future 的开发者省去一些麻烦。我希望这会有所帮助。

关于iphone - fbDidLogin 的问题从未调用过 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044412/

相关文章:

ios - 如何使 2 个 CPTXYPlotSpace 都在其中一个 CPTXYPlotSpace 上响应相同的手势?

objective-c - 播放 NSSound 两次

ios - 自动代码生成 NSManagedObject 子类 Swift 3 中的无效重新声明

ios - 如何在 LiveCode 中使用 mergMK 创建可点击的 POI?

ios - 如何复制 Instagram 或 Facebook 捏合以在 UITableViewCell 中放大和拖动图像上的手势?

iphone sqlite 静态链接?

ios - 使用 Core NFC 框架从一台 iOS 设备读取另一台设备上的数据

iphone - 如何从 iOS 应用程序发送添加好友请求(给 facebook 用户)?

ios - Swift:UIWebView 加载旧内容

objective-c - 在 OSX 10.6+ 中识别当前事件应用程序的 'correct' 方法是什么?