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

Getting a user access token in facebook using Koala

我正在写一个简单的程序,自动创建一个facebook post。据我了解,我需要一个 "user access token" 来 做这个。我正在使用考拉(但其他人的理念相似 库)。无论如何,我创建了一个新的 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] 方法给我的 url, 但它没有给我任何代码! "code"变量从何而来?

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

具体

@oauth.url_for_oauth_code

https://github.com/arsduo/koala/blob/master/lib/koala/oauth.rb#L85 生成一个 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 时,此 URL 将附加您必须处理然后提供给

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

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