2012-01-11 23 views
2

私はOmniauthを使用して、ユーザーがGithubでログインできるようにします。Omniauth:Githubでログインする(404アクセストークン)

ステップ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.を、私はにPOSTリクエストを送信することにより、トークンを盗んしよう:パラメータを持つ

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

:CLIENT_ID、client_secretステップ1で受信されたコードが、私は404

得ます

質問1:これらの手順は正しいですか、何か不足していますか?

質問2:ログインに成功した後に認証するためにデータベースに保存する必要があるパラメータは何ですか(私はUserモデルを使用します)。あなたがOmniauthを使用している場合

+1

ちょっと、正しく答えたとマークしていますね。私は何がアップしたのか知りたいです! –

答えて

5

、あなただけ

"/auth/github" 

にユーザーをポイントし、[次のようにルートを設定する必要があります。

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

Omniauthは、他のすべてを処理すると、あなたが返されますすべてのユーザー情報を含むハッシュ

そして、アクセストークンを取得するために、あなたは次のようにポスト要求を提出する必要があります。

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エラー。それは、これはあまりにも私に起こった、本当に愚かだとの理由だった... ものの

+0

ありがとうございましたが、私はすでにそれを行いました。問題は、404応答とデータベースに保存する内容です。 – Jane

+0

私はあなたが何をしようとしているのか本当に理解していません。あなたの説明で少し明確になりますか? –

+0

@Jane Nevermind、私は今理解しています。リダイレクトURLがない可能性があります。 GitHubサイトには、あなたが必要と言っています 'POST https://github.com/login/oauth/access_token? client_id = ...& redirect_uri = http://www.example.com/oauth_redirect& client_secret = ...& code = ... ' –

5

まあ、私は、最終的な結果が記載されているよう

コピーして貼り付けclient_secretclient_idを;-)混ざっgithubが404と応答しました これはこの問題の背後にある "問題"でした可能性があります;-)

関連する問題