Iphone 脱机访问权限被降级后,在iOS上扩展Facebook访问令牌时出现问题

Iphone 脱机访问权限被降级后,在iOS上扩展Facebook访问令牌时出现问题,iphone,objective-c,ios,facebook-ios-sdk,Iphone,Objective C,Ios,Facebook Ios Sdk,我正试图弄清楚在Facebook发布后我的iOS应用程序应该如何工作 不推荐使用脱机访问权限。我看不清楚 他们都有好几次 我想做的是: 我通过FB授权我的iOS应用程序: [[u facebook authorize:[NSArray arrayWithObjects:@“email”、@“发布流”、@“用户生日”,无] 然后,我从graph API请求“me”,以获取我需要的FB ID 它: [[u facebook请求带图形路径:@“我”和委托:self] 然后在: -(void)请求:(F

我正试图弄清楚在Facebook发布后我的iOS应用程序应该如何工作 不推荐使用脱机访问权限。我看不清楚 他们都有好几次

我想做的是:

  • 我通过FB授权我的iOS应用程序:

    [[u facebook authorize:[NSArray arrayWithObjects:@“email”、@“发布流”、@“用户生日”,无]

  • 然后,我从graph API请求
    “me”
    ,以获取我需要的FB ID 它:

    [[u facebook请求带图形路径:@“我”和委托:self]

  • 然后在:

    -(void)请求:(FBRequest*)请求didLoad:(id)结果

  • 我检查代币的有效期

    if ([_facebook.expirationDate timeIntervalSinceNow] < 60*60*24) // 1 day 
    { 
       [self extendAccessTokenWithAppID:kFacebookAppID 
                              appSecret:kFacebookAppSecret     
                          existingToken:_facebook.accessToken]; 
    }
    
    我用一种简单的方式处理回应

    - (void)request: (FBRequest*)request didLoad: (id)result 
    
    但我得到的总是我传递给端点的相同令牌和相同的到期日期。有效期从不延长,仅为短短的1-2小时(短寿命的正常情况) 访问令牌)。这意味着令牌未扩展

    我已将删除脱机访问权限设置为禁用

    你知道我的方法有什么不对吗?谢谢你的帮助

    附言 我在StackOverflow上发现了类似的问题,但没有一个答案对我有用。

    更新:

    启用删除脱机访问权限使FB只返回长寿命令牌。我通过创建一个新的FB帐户并在我的应用程序中使用该帐户登录来测试这一点。我立刻得到了长寿令牌

    使用删除脱机\u访问权限禁用FB时,即使我尝试使用文档中提供的端点扩展短期访问令牌,FB也只会为我提供短期访问令牌。端点返回具有相同过期日期的相同令牌


    关键的问题是,当FB给我短期访问令牌,我联系端点将其扩展为长期访问令牌时,我无法测试场景。似乎FB开发者还没有准备好他们想要引入的功能。

    需要检查的东西可能会给您带来问题

  • 您已在应用程序的高级设置中禁用脱机访问
  • 您正在使用SDK的最新副本。它当前未版本化,但较旧的副本不支持访问令牌扩展
  • 您已经按照配置了SSO
  • 您一直等到用户的令牌完全过期-您可能会因为重试而获得“新”的短令牌,但一旦令牌完全过期,您应该在用户下次回来时获得更长的令牌

  • “我已将删除脱机访问权限设置为禁用。”–您想启用它。我看到了,启用后,应用程序立即获得了长寿令牌。问题是,当给用户一个短期令牌,然后我通过联系端点来扩展它时,我无法测试正常路径。你知道我怎样才能做到这一点吗?谢谢你的回答!我现在有点困惑。我将“删除脱机访问权限”迁移设置为已启用,并且我的应用程序立即获得了一个长期访问令牌,而没有获得短期访问令牌?应该启用还是禁用此迁移?因为对我来说,看完这些文件后就不清楚了。干杯!:)这句话的措辞很奇怪,但是“删除脱机访问权限”被“启用”是指你的应用程序已经准备好使用新的“短/长”令牌模型了好吧,现在我明白了。但我如何测试它以查看我的令牌扩展代码是否正常工作?现在,FB给了我一个长寿命的访问令牌,而不是给了我一个短命的令牌(这样我就可以扩展它)。谢谢你需要等待一段时间才能看到它的实际发生,但下次用户回来时应该可以延长时间,假设他们仍然登录到FaceBook。我创建了一个新的FB帐户来测试我是否获得了短期令牌,但它没有发生。FB给了我60天的代币——这意味着我无法测试扩展代币是否有效。我只希望当FB开始从端点返回扩展令牌时,我的应用程序能够工作。。。呃:/。无论如何,非常感谢@Igy的帮助!它澄清了很多!
    - (void)request: (FBRequest*)request didLoad: (id)result