前提・実現したいこと
独学でDjangoを勉強している者です。
Django RestFrameworkとJS、HTMLでGoogleソーシャルログインを実装したのですが、仕組みがいまいち分からずこの実装でよいのか分かりません。
具体的には、
- クライアントシークレットが丸見えだが、どうすればよいのか
- 以下のコードのようにAPIサーバーにアクセストークンを送ればよいのか(元々、認証コードを送るものだと思っていた)
などです。
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 6 <script src="https://apis.google.com/js/platform.js" async defer></script> 7 <meta name="google-signin-client_id" content="<クライアントID>"> 8 9 <title>サンプル</title> 10</head> 11<body> 12 <div class="g-signin2" data-onsuccess="onSignIn"></div> 13 14 15 <script src="{% static 'js/jquery-3.4.1.js' %}"></script> 16 17 <script> 18 function onSignIn(googleUser) { 19 var access_token = googleUser.vc.access_token; 20 21 fetch(`http://localhost:8000/auth/convert-token`, { 22 method: 'POST', 23 body: JSON.stringify({ 24 token: access_token, 25 backend: 'google-oauth2', 26 grant_type: 'convert_token', 27 client_id: '<クライアントID>', 28 client_secret: '<クライアントシークレット>' 29 }), 30 headers: { 31 'Content-type':'application/json' 32 }, 33 }).then(response => { 34 return response.json(); 35 }).then(response => { 36 console.log(response); 37 }) 38 } 39 </script> 40 41</body> 42</html> 43
DRFでdjango-rest-framework-social-oauth2のライブラリを使用しています。
試したこと
元々、認証コードを送るものだと思っていたのですが、上手くいかず、上記のようにアクセストークンを取得して、それを送ったら上手くいったので、この実装でいいのか心配です。
少なくともクライアントシークレットが丸見えが良くないのは分かります。
拙い文章で申し訳ありませんが、どうかよろしくお願いします。
あなたの回答
tips
プレビュー