【问题标题】:Getting a user access token in facebook using Koala使用 Koala 在 facebook 中获取用户访问令牌
【发布时间】:2015-03-06 22:47:27
【问题描述】:

我正在编写一个简单的程序来自动创建一个 facebook 邮政。据我了解,我需要有一个“用户访问令牌”才能 做这个。我正在使用考拉(但其他人的理念类似 图书馆)。无论如何,我创建一个新的 OAuth 帐户:

@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)

然后考拉的指令变得有些不清楚。接下来的两行是:

@oauth.url_for_oauth_code # generate authenticating URL
@oauth.get_access_token(code) # fetch the access token once you have the code

“代码”变量从何而来?里面没有说 文档。此外,“get_access_token”方法是否获得“app 访问令牌”或“user_access_token”?方法名称不清楚。 我尝试访问 [url_for_oauth_code] 方法给我的 url, 但它没有给我任何代码! “code”变量从何而来?

【问题讨论】:

  • 你找到答案了吗?
  • 大家好。我对 API 的使用非常陌生。在@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url) 中,callback_url 的值应该是多少?我想刷新现有登录用户的令牌。提前谢谢你。

标签: facebook facebook-graph-api oauth koala


【解决方案1】:

在 Koala 的首页上,它声明您需要通过 http://developers.facebook.com/docs/authentication/ 描述的 OAuth 流程(这是一个旧链接,但其中的内容是有效的)

具体

@oauth.url_for_oauth_code

https://github.com/arsduo/koala/blob/master/lib/koala/oauth.rb#L85 生成一个 URL,您需要根据 repo 将用户定向到它类似于

https://www.facebook.com/dialog/oauth?
    client_id={app-id}&
    redirect_uri={redirect-uri}&
    scope=email

根据文档https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.2#login,当省略response_type 时,默认响应类型为code。所以上面等价于

https://www.facebook.com/dialog/oauth?
    client_id={app-id}&
    response_type=code&
    redirect_uri={redirect-uri}&
    scope=email

所以在重定向到redirect-uri 时,此 URL 将附加您必须处理然后提供给的代码参数

@oauth.get_access_token(code)

访问令牌是用户访问令牌。

【讨论】:

  • 好吧,我还是一头雾水。当您说“生成一个您需要根据 repo 引导用户访问的 URL 时,它类似于”。当您说“基于回购”时,您是什么意思“回购”?这是“存储库”的缩写吗?像 github 存储库?我看到重定向的 URL 有一个长字符串,我认为它是 [code] 变量。我收到此错误:Koala::Facebook::OAuthTokenRequestError 异常:类型:验证验证码时出错。请确保您的 redirect_uri 与您在 OAuth 对话请求中使用的相同。
  • 也许我使用了错误类型的令牌。我只是想要一个程序不时自动在 Facebook 提要上发布信息(自动“公告”)。改用“页面访问令牌”会更好吗?
  • @SteveQuezadas 我花时间浏览了 github 库中的 koala,它的源代码概述了每个函数 (url_for_oauth_code,get_access_token) 的作用。您的 redirect_uri 配置不正确stackoverflow.com/questions/16345777/… 转到您的应用设置并确保它们匹配。
  • @SteveQuezadas 您无法自动获取用户令牌。要获取页面令牌,您需要获取用户令牌。
  • 是的,你是对的,URL 略有偏差(最后没有结尾的“/”。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-07-14
  • 2017-01-28
  • 1970-01-01
  • 2014-12-09
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
相关资源
最近更新 更多