【发布时间】:2012-06-21 18:18:57
【问题描述】:
我正试图弄清楚我的 iOS 应用在 Facebook 制作后应该如何工作 offline_access 权限已弃用。 Docs 不清楚,我读了 他们都几次。
我想做的是:
-
我使用 FB 授权我的 iOS 应用程序:
[_facebook authorize: [NSArray arrayWithObjects: @"email", @"publish_stream", @"user_birthday", nil]]; -
然后,我从图形 API 请求
"me"以获取我需要的 FB ID 它:[_facebook requestWithGraphPath: @"me" andDelegate:self]; -
然后在:
-(void)request: (FBRequest*)request didLoad: (id)result
我检查令牌的到期日期
if ([_facebook.expirationDate timeIntervalSinceNow] < 60*60*24) // 1 day
{
[self extendAccessTokenWithAppID:kFacebookAppID
appSecret:kFacebookAppSecret
existingToken:_facebook.accessToken];
}
我扩展令牌的方法只是联系端点,即 我在开头提到的文档中描述了。
-(void)extendAccessTokenWithAppID:(NSString*)appID appSecret:(NSString*)appSecret existingToken:(NSString*)existingToken
{
NSString *requestString = [NSString stringWithFormat:@"oauth/access_token?client_id=%@&client_secret=%@&grant_type=fb_exchange_token&fb_exchange_token=%@", appID, appSecret, existingToken];
[_facebook requestWithGraphPath: requestString andDelegate: self];
}
我在
中处理响应- (void)request: (FBRequest*)request didLoad: (id)result
但我得到的始终是我传递给端点的相同令牌和相同的到期日期。有效期从不延长,只有短短的1-2小时(短暂的正常 访问令牌)。这意味着令牌没有被扩展。
我已将删除offline_access 权限设置为禁用。
你知道我的方法有什么问题吗?感谢您的帮助!
附言 我在 StackOverflow 上发现了类似的问题,但没有一个答案对我有用,例如 Access Token expire time with offline_access permission
更新:
启用 删除 offline_access 权限 使 FB 只返回长期存在的令牌。我通过创建一个新的 FB 帐户并在我的应用程序中使用此帐户登录来对此进行了测试。我立即得到了万岁令牌。
使用 Remove offline_access 权限 禁用 FB 只给我短期访问令牌,即使我尝试使用文档中提供的端点扩展短期令牌。端点返回具有相同到期日期的相同令牌。
关键问题是当 FB 给我短期访问令牌并且我联系端点以将其扩展为长期访问令牌时,我无法测试该场景。似乎 FB 开发者还没有为他们想要引入的功能做好准备。
【问题讨论】:
-
“我已将 Remove offline_access 权限设置为已禁用。” – 您想启用它。
-
我看到了,在启用它后,应用程序立即获得了长期存在的令牌。问题是当用户获得短暂的令牌然后我通过联系端点来扩展它时,我无法测试正常路径。你知道我怎样才能做到这一点吗?
标签: iphone objective-c ios facebook-ios-sdk