Jan*_*ane 2 ruby ruby-on-rails github sinatra omniauth
我使用Omniauth让用户使用Github登录.
步骤1.发送给用户/auth/github,然后重定向到github进行登录.
步骤2.用户验证自身,Github返回此字符串和code参数:
<# extra=# private_gists=0 public_gists=0 public_repos=0 total_private_repos=0 type="User" url="https://api.github.com/users/XXXXX">> info=#> provider="github" uid=13XXXXX>
params[:code] = CODEXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
步骤2.然后,我尝试通过发送邮件请求来检索令牌:
https://github.com/login/oauth/access_token
Run Code Online (Sandbox Code Playgroud)
使用参数:client_id,client_secret和步骤1中收到的代码,但我得到404.
问题1:这些步骤是正确的还是我遗漏了什么?
问题2:成功登录后我需要在数据库中保存哪些参数进行身份验证(我使用的是用户模型).
如果您使用的是Omniauth,则应该将用户指向
"/auth/github"
Run Code Online (Sandbox Code Playgroud)
然后设置这样的路线:
match '/auth/:provider/callback', :to => 'sessions#create'
match '/auth/failure', :to => 'sessions#failure'
Run Code Online (Sandbox Code Playgroud)
Omniauth将处理其他所有内容,您将返回包含所有用户信息的哈希值.
然后,要获取访问令牌,您必须提交一个帖子请求,如下所示:
POST https://github.com/login/oauth/access_token?
client_id=...&
redirect_uri=http://www.example.com/oauth_redirect&
client_secret=...&
code=...
Run Code Online (Sandbox Code Playgroud)
我想你错过了redirect_uri,所以GitHub通过向https://github.com/login/oauth/access_token提交GET请求来重定向,这会返回404错误.
嗯,虽然这真的很傻,但这也发生在我身上,原因是......我把它client_id与client_secret粘贴它们的时候混在了一起;-)
最终结果如上所述,github以404回应.可能这也是这个问题背后的"问题";-)
| 归档时间: |
|
| 查看次数: |
3611 次 |
| 最近记录: |