ruby-on-rails - Omniauth:使用 Github 登录(404 访问 token )

标签 ruby-on-rails ruby 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

第 2 步。 然后,我尝试通过向以下地址发送发布请求来检索 token :

https://github.com/login/oauth/access_token

带有参数:client_id、client_secret 和在步骤 1 中收到的代码,但我得到 404。

问题 1:这些步骤是否正确,还是我遗漏了什么?

问题2:我需要在数据库中保存哪些参数以在成功登录后进行身份验证(我使用用户模型)。

最佳答案

如果您使用的是 Omniauth,您应该将用户指向

"/auth/github"

然后像这样设置路由:

match '/auth/:provider/callback', :to => 'sessions#create'
match '/auth/failure', :to => 'sessions#failure'

Omniauth 将处理所有其他事情,您将返回一个包含所有用户信息的哈希值。

然后要获取访问 token ,您必须按如下方式提交发布请求:

POST https://github.com/login/oauth/access_token?
client_id=...&
redirect_uri=http://www.example.com/oauth_redirect&
client_secret=...&
code=...

我认为您缺少 redirect_uri,因此 GitHub 通过向 https://github.com/login/oauth/access_token 提交 GET 请求进行重定向,返回 404 错误。

关于ruby-on-rails - Omniauth:使用 Github 登录(404 访问 token ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823760/

相关文章:

ruby-on-rails - ActionDispatch::Cookies::CookieOverflow 但 cookie 很小

ruby - 关于 Ruby 中 OBJECTS 的问题

ruby - 为什么不应该使用制表符进行缩进?

git - 你如何在 GitHub 上创建自己的仓库?

mysql - 无法使用rails获取mysql结果中的信息

javascript - 如何完全删除 Rails 应用程序中对 application.js 和 application.css 的所有引用?

Git 到 GitHub - 无法连接到端口 443 : Connection refused

git - 如何将 OpenShift 与私有(private) BitBucket 存储库连接

ruby-on-rails - Ruby/Rails Javascript (flot) 使用 Wickedpdf 渲染 pdf

ruby-on-rails - Rails 3,Feedzirra - 未定义方法 `entries' 为 nil :NilClass