Django의 Google API OAuth
10242 단어 codenewbiepythondjangowebdev
따라서 Google OAuth를 Django 애플리케이션과 통합하고 사용자 토큰을 검색, 저장하는 방법은 다음과 같습니다.
google-api-python-client
를 통해 Google API에 대한 인증된 요청을 생성하는 데 사용할 수 있습니다.목적
이 기사에서는 Google OAuth를 Django 애플리케이션과 통합하고 나중에 사용할 수 있도록 사용자 토큰을 저장하고 저장된 자격 증명을 사용하여 사용자의 Google 캘린더에서 다가오는 이벤트에 액세스하는 방법을 보여 드리겠습니다.
전제 조건
Google API Console 에서 이미 프로젝트를 만들고 프로젝트에 대해 Google Calendar API를 활성화했으며 OAuth 동의 화면을 설정했으며
client_id.json
파일이 있다고 가정하겠습니다.또한 이미 django 애플리케이션을 초기화했다고 가정합니다.
시작하자
먼저 oauth를 설정하기 위해
google-apis-oauth-django
를 설치하고 다음 명령어로 구글 API에 접근하기 위해 google-api-python-client
를 설치해야 합니다.pip install google-apis-oauth-django google-api-python-client
먼저 사용자를
Sign In With Google
라는 URL로 리디렉션하는 google_oauth/redirect/
버튼을 만듭니다. 먼저 사용자를 리디렉션하기 위한 보기를 만들어야 합니다. views.py
에 다음 코드를 추가하십시오.import os
import google_apis_oauth
from django.shortcuts import HttpResponseRedirect
# The url where the google oauth should redirect
# after a successful login.
REDIRECT_URI = 'http://localhost:8000/google_oauth/callback/'
# Authorization scopes required
SCOPES = ['https://www.googleapis.com/auth/calendar']
# Path of the "client_id.json" file
JSON_FILEPATH = os.path.join(os.getcwd(), 'client_id.json')
def RedirectOauthView(request):
oauth_url = google_apis_oauth.get_authorization_url(
JSON_FILEPATH, SCOPES, REDIRECT_URI)
return HttpResponseRedirect(oauth_url)
이제
urls.py
에서 다음과 같이 하여 이 보기를 포함할 수 있습니다.urlpatterns = [
...,
path('google_oauth/redirect/', RedirectOauthView)
]
이제 사용자가 해당
Sign In With Google
버튼을 클릭하면 Google oauth 화면으로 리디렉션됩니다. 로그인에 성공하면 위에서 지정한 REDIRECT_URI
즉 google_oauth/callback/
로 리디렉션됩니다.따라서 이에 대한 견해도 작성해야 합니다. 해당 보기에서 이제 사용자 자격 증명을 성공적으로 검색할 수 있습니다.
def CallbackView(request):
try:
# Get user credentials
credentials = google_apis_oauth.get_crendentials_from_callback(
request,
JSON_FILEPATH,
SCOPES,
REDIRECT_URI
)
# Stringify credentials for storing them in the DB
stringified_token = google_apis_oauth.stringify_credentials(
credentials)
# Store the credentials safely in the DB
...
# Now that you have stored the user credentials you
# can redirect user to your main application.
...
except exceptions.InvalidLoginException:
# This exception is raised when there is an inavlid
# request to this callback uri.
urls.py
에 이 보기를 추가합니다.urlpatterns = [
...,
path('google_oauth/callback/', CallbackView)
]
이제 사용자의 자격 증명이 있습니다. 다음 방법으로 Google API에 액세스할 수 있습니다.
import google_apis_oauth
from googleapiclient.discovery import build
# Load the stored credentials in a variable say 'stringigied_token'
# Load the credentials object using the stringified token.
creds = google_apis_oauth.load_credentials(stringified_token)
# Using credentials to access Upcoming Events
service = build('calendar', 'v3', credentials=creds)
now = datetime.datetime.utcnow().isoformat() + 'Z'
print('Getting the upcoming 10 events')
events_result = service.events().list(
calendarId='primary', timeMin=now,
maxResults=10, singleEvents=True,
orderBy='startTime').execute()
events = events_result.get('items', [])
if not events:
print('No upcoming events found.')
for event in events:
start = event['start'].get('dateTime', event['start'].get('date'))
print(start, event['summary'])
그게 다야! 마찬가지로 이 자격 증명을 사용하여 다른 Google API에도 액세스할 수 있습니다.
Reference
이 문제에 관하여(Django의 Google API OAuth), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nishantwrp/google-apis-oauth-in-django-17ch텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)