Я использую django social-auth для авторизации пользователей в Google Analytics и Youtube. Следовательно, используется один бэкэнд в 2 разных шаблонах. Однако с Google Analytics все работает как часы, но при попытке авторизоваться в Youtube в конце процесса аутентификации выдает ошибку:
social_core.exceptions.AuthStateForbidden: указан неверный параметр состояния.
Я попытался удалить уже успешно авторизованное мое приложение для Google Analytics Scopes из учетной записи Google и снова авторизовать для Youtube Scopes, но это не дает никакой разницы.
Мой обработчик ютуба:
class YouTubeLoginHandler(object):
def __init__(self, client_secret):
self.SCOPES = ['https://www.googleapis.com/auth/youtube.readonly']
self.CLIENT_SECRETS_PATH = client_secret
def init_youtube_api(self):
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
os.path.abspath(
os.path.join(os.path.dirname(__file__), self.CLIENT_SECRETS_PATH)
), scopes=self.SCOPES)
flow.redirect_uri = 'http://localhost:8000/api/oauth/complete/google-oauth2/'
authorization_url, state = flow.authorization_url(
# Enable offline access so that you can refresh an access token without
# re-prompting the user for permission. Recommended for web server apps.
access_type='offline',
# Enable incremental authorization. Recommended as a best practice.
include_granted_scopes='true')
return authorization_url
Мой вид в views.py
@login_required
def login_youtube(request):
user = request.user
youtube = YouTubeLoginHandler('client_secrets.json')
authorization_url = youtube.init_youtube_api()
return HttpResponseRedirect(authorization_url)