質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

743閲覧

Django RestFrameworkのソーシャルログインについて

dkito

総合スコア13

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/12/29 04:51

編集2021/12/29 05:01

前提・実現したいこと

独学で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のライブラリを使用しています。

試したこと

元々、認証コードを送るものだと思っていたのですが、上手くいかず、上記のようにアクセストークンを取得して、それを送ったら上手くいったので、この実装でいいのか心配です。
少なくともクライアントシークレットが丸見えが良くないのは分かります。
拙い文章で申し訳ありませんが、どうかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問