🔥 TIL - Day 19
13238 ワード
2つ目のプロジェクトのために、
KACA、NAVER、フェイスブック、Googleなどを2つ目のプロジェクトに応用したいので、早めに実施する予定です.まずはKACAとNAVERを実現
📌 鍵管理!!
実装前に、APIおよびGithubを使用するには、鍵管理が必要である.いろいろな方法がありますが、見つけたのは
ライブラリのインストール
まず,デカップリングライブラリのconfigメソッドをインポートする.
プロセスは同じです. Kakaログイン要求を受信すると、Kakaログインページに移動します.
この場合、アプリケーション生成時に指定した 2 回答の
📌 Flashでのnaver loginの使用
ほとんど同じです.
開発をよく勉強していた頃は
flask
で複数のソーシャルログインが実現された.oauth
の概念を正しく理解し、実施したところ、サービスの種類にかかわらず、正式な文書だけで実施できることが分かった.(喜び)KACA、NAVER、フェイスブック、Googleなどを2つ目のプロジェクトに応用したいので、早めに実施する予定です.まずはKACAとNAVERを実現
📌 鍵管理!!
実装前に、APIおよびGithubを使用するには、鍵管理が必要である.いろいろな方法がありますが、見つけたのは
python-decouple
庫です.ライブラリのインストール
pip install python-decouple
setting.iniで鍵を定義するkey=value
の形態として定義される.[settings]
KAKAO_REST_API=MY_KEY
NAVER_CLIENT=MY_KEY
NAVER_CLIENT_SECRET=MY_KEY
定義されたキー値を入力まず,デカップリングライブラリのconfigメソッドをインポートする.
from decouple import config
持ってくるのは簡単です.client_id = config("KAKAO_REST_API")
📌 Flaskでkakao loginを使うプロセスは同じです.
この場合、アプリケーション生成時に指定した
redirect_uri
を設定する必要があります.このredirect_uri
で回答すると엑세스 토큰
の인증코드
を受け取ることができる.인증코드
が受信された場合、엑세스 토큰
は、対応するコードによって要求される.엑세스 토큰
,要求사용자 정보
.from flask import redirect, request, jsonify, Blueprint
import requests
from decouple import config
bp = Blueprint("kakao_login", __name__, url_prefix='/')
kakao_client_key = config('KAKAO_REST_API')
redirect_uri = "http://localhost:5000/oauth/kakao/callback"
# 사용자가 카카오 로그인 요청시 카카오 로그인 페이지로 이동
# 사용자가 카카오에 인증 성공시 지정한 Redirect_URI로 Access_token을 요청할 수 있는 인증토큰(Authentication_code)를 응답받는다.
@bp.route('/oauth/kakao')
def redirect_kakao_login_page():
kakao_redirect_url = f"https://kauth.kakao.com/oauth/authorize?client_id={kakao_client_key}&redirect_uri={redirect_uri}&response_type=code"
return redirect(kakao_redirect_url)
# 인증토큰을 응답받고 응답받은 인증토큰으로 Access_token을 요청한 후 응답받은 Access_token으로 사용자 정보를 요청
@bp.route('/oauth/kakao/callback')
def access():
code = request.args.get('code')
access_token_request_url = f"https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id={kakao_client_key}&redirect_uri={redirect_uri}&code={code}"
response_token = requests.get(access_token_request_url).json()
token = response_token['access_token']
user_info_request_url="https://kapi.kakao.com/v2/user/me"
user_info = requests.get(user_info_request_url, headers={"Authorization":f"Bearer {token}"})
return jsonify(user_info.json())
受信したユーザ情報を適宜データベースに保存し、jwt
等を用いて現在のユーザの認証処理を行う.📌 Flashでのnaver loginの使用
ほとんど同じです.
from flask import Blueprint, request, jsonify, redirect
import requests
from decouple import config
bp = Blueprint("naver_login", __name__, url_prefix="/")
client_id = config("NAVER_CLIENT")
client_secret = config("NAVER_CLIENT_SECRET")
redirect_uri = "http://localhost:5000/oauth/naver/callback"
# localhost:5000/oauth/naver
@bp.route("/oauth/naver")
def redirect_naver_login_page():
naver_redirect_url=f"https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id={client_id}&state=STATE_STRING&redirect_uri={redirect_uri}"
return redirect(naver_redirect_url)
@bp.route("/oauth/naver/callback")
def access():
code = request.args.get('code')
token_request_url=f"https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id={client_id}&client_secret={client_secret}&code={code}"
token_response = requests.get(token_request_url)
token_json = token_response.json()
token = token_json['access_token']
user_info_request_url="https://openapi.naver.com/v1/nid/me"
user_info = requests.get(user_info_request_url, headers={"Authorization":f"Bearer {token}"})
return jsonify(user_info.json())
次のプロジェクトを完了するために、計画実施の機能を学習しています.開発をよく勉強していた頃は
이거 공부 해서 언제 써먹지 ...
と迷っていましたが、今回はすぐに現れる機会がありました.この点が励ましになったようだ.最近開発を学ぶ味がします😁Reference
この問題について(🔥 TIL - Day 19), 我々は、より多くの情報をここで見つけました https://velog.io/@dhk22/TIL-Day-19テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol