草庐IT

iphone - 在 offline_access 权限被贬低后在 iOS 上扩展 Facebook 访问 token 的问题

coder 2024-01-27 原文

我正在尝试弄清楚我的 iOS 应用程序在 Facebook 发布后应该如何工作 offline_access 权限已弃用。 Docs不清楚,我读过 他们都来过几次。

我想做的是:

  1. 我使用 FB 授权我的 iOS 应用:

    [_facebook authorize: [NSArray arrayWithObjects: @"email", @"publish_stream", @"user_birthday", nil]];

  2. 然后,我从图形 API 请求 “me” 以获取我需要的 FB ID 它:

    [_facebook requestWithGraphPath: @"me"andDelegate:self];

  3. 然后在:

    -(void)request: (FBRequest*)request didLoad: (id)result

我检查 token 的到期日期

if ([_facebook.expirationDate timeIntervalSinceNow] < 60*60*24) // 1 day 
{ 
   [self extendAccessTokenWithAppID:kFacebookAppID 
                          appSecret:kFacebookAppSecret     
                      existingToken:_facebook.accessToken]; 
}

我扩展 token 的方法只是联系端点 我在开头提到的文档中进行了描述。

-(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 

但我得到的始终是我传递给端点的相同 token 和相同到期日期。保质期永远不会延长,只有短短的 1-2 小时(短生命周期正常 访问 token )。这意味着 token 未扩展。

我已将删除 offline_access 权限设置为禁用

你知道我的方法有什么问题吗?感谢您的帮助!

附言 我在 StackOverflow 上发现了类似的问题,但没有一个答案对我有用,例如 Access Token expire time with offline_access permission

更新:

启用删除 offline_access 权限 使 FB 仅返回长期存在的 token 。我通过创建一个新的 FB 帐户并在我的应用程序中使用该帐户登录来对此进行测试。我立即获得了长寿 token 。

在禁用删除离线访问权限 的情况下,即使我尝试使用文档中提供的端点来扩展短期 token ,FB 也只会给我短期访问 token 。端点返回具有相同到期日期的相同 token 。

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

最佳答案

需要检查的可能导致您出现问题的地方

  1. 您已在应用的高级设置中禁用 offline_access
  2. 您使用的是 SDK 的最新副本。它目前未版本化,但旧版本不支持访问 token 扩展
  3. 您已根据 instructions in the docs 配置 SSO
  4. 您一直等到用户的 token 完全过期 - 您可能会得到"new"的短 token ,因为您正在重试,但是一旦 token 完全过期,下次用户回来时您应该会得到一个更长的 token

关于iphone - 在 offline_access 权限被贬低后在 iOS 上扩展 Facebook 访问 token 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135041/

有关iphone - 在 offline_access 权限被贬低后在 iOS 上扩展 Facebook 访问 token 的问题的更多相关文章

  1. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

  2. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  3. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  4. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  7. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  8. ruby - rbenv 安装权限被拒绝 - 2

    大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程:Linktotutorial我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行source~/.bash_profile我得到了错误;mkdir:/usr/local/rbenv/shims:权限被拒绝mkdir:/usr/local/rbenv/versions:权限被拒绝现在每次我加载终端时都会出现错误。bash_profile的内容;exportPATH=/usr/local/rbenv/bin:$PATHexportRBENV_ROOT=/usr/local/rbe

  9. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  10. ruby-on-rails - attr_accessible 在 Rails 中如何工作? - 2

    我刚刚有一个关于RubyonRails和模型(Rails3)中的attr_accessible属性的一般性问题。有人可以解释应该在那里定义哪些模型属性吗?我记得一些关于批量分配风险的事情,虽然我在这方面不太了解......谢谢:) 最佳答案 想象一个带有一些字段的订单类:Order.new({:type=>'Corn',:quantity=>6})现在假设订单也有折扣代码,比如:price_off。您不想将:price_off标记为attr_accessible。这会阻止恶意代码制作最终会执行如下操作的帖子:Order.new({:

随机推荐