2017-06-03 14 views
1

私はリンクされた認証APIを使用して、Webサイトのユーザーにログインしています。私は、次のURLにリダイレクトしていますすべての無効なredirect_uriを与えるLinkedin認証

まず:

https://www.linkedin.com/oauth/v2/authorization?' \ 
     'response_type=code' \ 
     '&client_id=*****' \ 
     '&redirect_uri=http%3A%2F%2F127.0.0.1%3A8000%2Faccounts%2Flinkedin%2Fcallback%3Fnext%3D%2Fhome' \ 
     '&state=123456789' \ 
     '&scope=r_basicprofile%20r_emailaddress' 

これが正常にLinkedInの認証ダイアログボックスにリダイレクトします。リンクされたアプリユーザーに許可を与えることを受け入れると、code paramが追加されたredirect_uriにリダイレクトされます。

requests.post(
    'https://www.linkedin.com/oauth/v2/accessToken', 
    data={ 
     'grant_type': 'authorization_code', 
     'code': returned code in previous step, 
     'redirect_uri': 'http%3A%2F%2F127.0.0.1%3A8000%2Faccounts%2Flinkedin%2Fcallback%3Fnext%3D%2Fhome', 
     'client_id': ****, 
     'client_secret': settings.LINKEDIN_CLIENT_SECRET, 
    } 
) 

が、この要求は成功していないと私は理由を知りません:

はその後、私は次のようなPOSTリクエストを送ります!あなたはPOSTでリダイレクトURIのURLエンコードされた値を提供している、あなたのトークン要求で

{'error': 'invalid_redirect_uri', 'error_description': 'Unable to retrieve access token: appid or redirect uri or code verifier does not match authorization code or authorization code expired'} 

あなたはREDIRECT_URIは、両方の要求でも同じです見ての通り...

+0

送信する必要があります。 (リンクされているかどうかわかりませんが)redirect_uriを送信しないとうまくいくのですか? "ます。https://www.linkedin –

+0

はい、それは必要ではLinkedInのドキュメントに – mohammad

答えて

3

:以下は、LinkedInので返される応答でありますデータの場合、requests.postは、dataオブジェクトのキーと値のペアを自動的にURLエンコードします。したがって、この値はサーバに二重にエンコードされ、そのため、許可リクエストで送信された元の値と一致しません。サーバーはinvalid_redirect_uriに応答します。

あなたは通常REDIRECT_URIせずに行われているアクセストークンのための認証コードを交換

'redirect_uri': 'http://127.0.0.1:8000/accounts/linkedin/callback?next=/home', 
+0

おかげでたくさんのハンクスをベース。 メソッド: 'POST'、 ヘッダー:{ContentType: 'application(/)/ oauth/v2/accessToken/grant_type = authorization_code&code =' +アクセスコード+ '&redirect_uri = http://localhost/workout/linkedin.html&client_id=xxx&client_secret=xxx'/x-www-form-urlencodedで '}、 \t成功:関数(RESP){ \t \t \tにconsole.log(RESP); }})。 – mohammad

+0

@Hans Zは、AjaxのPOSTメソッド のような$アヤックス({\t \t \t \t URLをすることによって、これを達成するためにとにかくがあり – Sankar

関連する問題