0

我尝试将 login_with_oauth2 与 google_drive 一起使用,但我不明白#google_drive.rb 文档中的授权代码是什么

client = OAuth2::Client.new(
    "522807807986-gjotv2np4tdqp4do8sq0gds0p2bqugtf.apps.googleusercontent.com",
    'fmWlfzejvx_UtS3CKq2Sl-WQ',
    :site => "https://accounts.google.com",
    :token_url => "/o/oauth2/token",
    :authorize_url => "/o/oauth2/auth"
)

auth_url = client.auth_code.authorize_url(
    :redirect_uri => "urn:ietf:wg:oauth:2.0:oob
http://localhost"
)

# Redirect the user to auth_url and get authorization code from redirect URL.

authorization_code = ''
auth_token = client.auth_code.get_token(
    authorization_code, :redirect_uri => "urn:ietf:wg:oauth:2.0:oob
http://localhost")
session = GoogleDrive.login_with_oauth(auth_token.token, 'http://localhost:8087')
4

1 回答 1

0

OAuth2是两步授权机制。AFAIU,您的代码只是从官方文档中复制粘贴,但不幸的是,这不是一个有效的代码。这只是一个例子。看看那里标记为红色的评论:这非常重要:

# Redirect the user to auth_url and get authorization code from redirect URL.

您将为 Google 服务器指定正确的 pingback URI 以发送您的响应authorization_code(现在有状态localhost,这对于 Google 了解您的 IP 以向您发送反馈是有问题的。)

总结:您向 Google 提供凭据,它以 JSON 回复,包含您authorization_code指定的地址。此阶段成功完成后,您可以继续请求auth_token

于 2013-09-21T13:25:43.900 回答