使用Koala在facebook中获取用户访问令牌

时间:2015-01-08 17:59:38

标签: facebook facebook-graph-api oauth koala

我正在写一个自动制作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

“code”变量来自哪里?它没有说 文档。此外,“get_access_token”方法是否获得“应用程序” 访问令牌“或”user_access_token“?方法名称不清楚。 我试着去找[url_for_oauth_code]方法给我的网址, 但它没有给我代码! “代码”变量来自哪里?

1 个答案:

答案 0 :(得分:4)

在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,您需要将用户定向到基于回购的URL

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时,此网址将附加您必须处理然后提供给

的代码参数。
@oauth.get_access_token(code)

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