2016-09-16 13 views
1

Auth0を使用してサーバーサイドのソーシャルログインを実装しようとしていて、ステップ3のthis guideが残っています。私は前の手順から値http://mywebsite/login?code=bLvc4EmsaezBp1sN&state=UXZ8DfOZeRNGy4AKD4DsaS0n#_=_でコールバックを取得しますが、codeの値をAuth0エンドポイント/oauth/tokenに送信すると、応答は{"error":"invalid_grant","error_description":"Invalid authorization code"}になります。Auth0 0Authソーシャルフロー - 無効な認証コード

私が見た例から、私のコードは短すぎると思います。私はここで間違って何をしていますか?

Wreck.post(`https://company-dev.eu.auth0.com/oauth/token`, { 
     payload: { 
     client_id: client_id, // rknvAeGruVDG3To0Lc37hMuDKsUNBBBV (too short?) 
     code: code, // Sl9fF6grhgDoecDt 
     redirect_uri: redirect_uri, // http://localhost:3000/login 
     grant_type: grant_type, // 'authorization_code' 
     client_secret: client_secret, // Shh, secret 
     state: state // 123ABC123 
     } 
    }, (err, res, payload) => { 
     if (err) { 
     console.log(err); 
     reject(); 
     } 

     console.log(payload.toString('utf8')); 
     resolve(); 
    }); 

編集:私の方法のエラーを実現し、パラメータはURLに移動されました。

今、私はエラーUnauthorized

+0

/oauth/tokenに送信したコードおよび/またはPOST本文をクライアントの秘密情報なしに投稿できますか? – neverendingqs

+0

@neverendingqs OPを更新しました! –

+0

'payload'は自動的に' application/x-www-form-urlencoded'( 'application/json'ではなく)に変換されます。 – neverendingqs

答えて

0

A 401は、通常client_id/client_secretを意味が無効になってしまいます。これらの値を再度確認してください。

redirect_uriが登録したものと一致しないこともあります(末尾/は問題ではないかもしれません)。 the docs you linkedから

REDIRECT_URIは、あなたの設定ページで定義されているものと一致しなければなりません。 http://localhostは有効なアドレスで、Auth0を使用すると多くのアドレスを同時に入力できます。

サイドノート:

  • stateパラメータは、あなたがここでやっていることのために必要とされていません(アクセストークン要求)
  • あなたstateパラメータはCSRF reasonsための暗号学的に安全であることを確認してください、そしてそのstateの認証コードの返信は、承認コードリクエストで送信したstateと同じです。
関連する問題