これは問題ありませんか?いいえ、ここに私がしたことがあります。それが役に立てば幸い。
マイセットアップ:Postgresのと
- ジャンゴ(今のGoogle+のライブラリを使用するために)REST API実装
- 社会認証用のPython社会認証(PSA)のための
- Djangoの残りのフレームワーク
- リアクタフロントエンド
ログインの場合は、それは/login/google-plus/
に変換されます。これはacess_tokenを取得するだけでなく、データベースに「ソーシャルユーザー」を作成します。私は私のケースではoauth 2.0のクライアント側のライブラリを使用し、おおよそクライアント側のすべての詳細とGoogleユーザーオブジェクトをフェッチするthisのアプローチに従った。私は上記のリンクのフォームをajax呼び出しで置き換えました。これはより柔軟で、必要なトークンやその他の情報にアクセスするために私にコントロールを与えます。ここでのajax呼び出しは、データベース内のソーシャル認証テーブルにソーシャルユーザーの作成を保証します。
<script type="text/javascript">
gapi.load('auth2', function() {
let auth2;
auth2 = gapi.auth2.init({
client_id: "YOUR CLIENT ID",
scope: "profile",
cookie_policy: 'single_host_origin'
});
auth2.then(function() {
let button = document.getElementById("google-plus-button");
auth2.attachClickHandler(button, {}, function (googleUser) {
// Send access-token to backend to finish the authenticate
// with your application
let authResponse = googleUser.getAuthResponse();
$.ajax({
"type": "POST",
"url": "/complete/google-plus/",
"data": {
"access_token": authResponse.access_token,
"CSRF": "{% csrf_token %}"
}
}).then(function(data){
console.log(data);
// Your success code
}).fail(function(error){
console.log(error);
});
});
});
});
</script>
あなたは、ユーザーがログアウトするまで、あなたは、ブラウザのローカルストレージに保存することができaccess_tokensをフェッチしたら。ログアウトすると、それらを削除することができます。
この方法は私が言及したセットアップのために私のためにうまくいきます。また、ユーザー名とパスワードで/obtain-auth-token
を照会する問題はまったくありません。
PSA djangoからソーシャル認証トークンにアクセスする他の方法があるかどうかは確かに分かりますか。乾杯!
要求本体でトークンを戻し、Javascript変数に割り当てることができます。 –