Ruby OAuth2客户端

时间:2016-08-07 10:03:52

标签: ruby oauth oauth-2.0 google-oauth2 oauth2

我正在尝试创建一个脚本来访问Quizlet API

这些API受OAuth2保护,我正在使用此oauth2 ruby​​ gem https://github.com/intridea/oauth2

gem的GitHub页面显示了一个例子,但对我来说不起作用,我觉得我错过了一些作品。 这是示例的一部分:

client.auth_code.authorize_url(:redirect_uri => 'http://localhost:8080/oauth2/callback')
# => "https://example.org/oauth/authorization?response_type=code&client_id=client_id&redirect_uri=http://localhost:8080/oauth2/callback"

token = client.auth_code.get_token('authorization_code_value', :redirect_uri => 'http://localhost:8080/oauth2/callback', :headers => {'Authorization' => 'Basic some_password'})

两个问题:

  • 我应该如何处理authorize_url的结果?应该在浏览器上打开此URL以继续登录,但gem不会自动打开它。我应该要求用户这样做吗?
  • 回调网址怎么样?该示例使用http://localhost:8080/oauth2/callback,但不清楚gem itelf是否负责监听该端口。

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

可能更容易查看Quizlet API要求您执行的操作,并跳过与oauth gem的集成。我可能错了,我有兴趣看看如何使用gem,但是看看如何逐步实现oauth客户端仍然是一个好主意。

这取自Quizlet API文档:

  1. 将用户发送至https://quizlet.com/authorize。这可以通过显示用户单击或重定向服务器端的链接来完成。
  2. 一旦用户接受/拒绝你的oauth(这发生在quizlet网站上,而不是你自己的),quizlet会向你的服务器发送请求。由于/authorize调用,Quizlet现在将使用redirect_uri来与您的服务器取得联系。在您的服务器对此路线的操作中,您可以获得authorization_code
  3. authorization_code发送给https://api.quizlet.com/oauth/token,并在回复中获取您用于其余api请求的access_token
  4. 关于宝石

    • 您应该将授权网址发送给用户。这是上面的第1步
    • 宝石不负责监听重定向。您需要使用Web服务器。