我正试图弄清楚我的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权限设置为已禁用。
你知道我的方法有什么不对吗?谢谢你的帮助!
P.S 我在StackOverflow上发现了类似的问题,但没有一个答案对我有用,例如 Access Token expire time with offline_access permission
更新
启用删除offline_access权限会使FB仅返回长期令牌。我通过创建一个新的FB帐户并在我的应用程序中使用此帐户进行日志记录来测试。我马上得到了长寿命令。
使用删除offline_access权限禁用FB只给我短暂的访问权限,即使我尝试使用文档中提供的端点扩展短期令牌。端点返回具有相同到期日期的相同令牌。
关键问题是,当FB给我短暂的访问令牌时,我无法测试场景,我联系端点将其扩展为长期访问令牌。似乎FB开发人员还没有为他们想要介绍的功能做好准备。
答案 0 :(得分:1)
要检查哪些内容可能会导致您遇到问题