- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让我的 google 身份验证在请求 Gmail 和日历数据的 Django 应用程序上工作。我已经在 Google 开发人员控制台中设置了 oAuth API 并将其与我的项目相关联,并且我已经三重检查了我的重定向 URI 与代码中的完全匹配(HTTP 与 HTTPS 没有错误,斜线也没有任何不一致) )。我确保我的 key 、 secret key 、ClientID 和 Client Secret 在我的 Django 应用程序的管理页面中全部配置且相同。我遵循了许多 youtube 教程并搜索了有关堆栈溢出的其他问题,但身份验证仍然无法正常工作。我收到错误 400:redirect_uri_mismatch。尽管我已经检查了很多次以确认它们是相同的。
从所有教程中,我了解到此错误有两个主要来源:
from django.shortcuts import render, redirect
from django.http import HttpRequest
from google_auth_oauthlib.flow import Flow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build
from .models import CredentialsModel
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
import os
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
os.environ['OAUTHLIB_RELAX_TOKEN_SCOPE'] = '1'
#Scopes are what we should be allowed to access
SCOPES = ['https://mail.google.com/', 'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'openid']
"""
IF HAVING ISSUES WITH ANON USER:
Make sure you are on 127.0.0.1:8000, not localhost, both from the test-page and
the callback page. For some reason they are treated as different sessions and thus will have
issues maintaining a logged in user
"""
def oauth2callback(request):
activeUser = request.user
#URL is what we need to use for authentication
authorization_response = request.build_absolute_uri()
flow = Flow.from_client_secrets_file(
settings.GOOGLE_OAUTH2_CLIENT_SECRETS_JSON,
scopes=SCOPES,
#This is where we are redirected after authentication
redirect_uri='http://127.0.0.1:8000/google/oauth2callback')
#Now get proper token
flow.fetch_token(authorization_response = authorization_response)
#print(request.user)
#Now save in our database
#print(flow.credentials)
try :
my_credential = CredentialsModel.objects.get(pk = activeUser)
except ObjectDoesNotExist:
CredentialsModel.objects.create(id = activeUser, credential = flow.credentials)
else:
my_credential.credential = flow.credentials
my_credential.save()
return redirect(flow.redirect_uri) #activeUser.get_absolute_url())
最佳答案
谷歌的文档在这方面不清楚(也可能是谷歌端的一个错误):
转到您的 GCP 控制台,在 OAuth consent screen
下,当Publishing status
是 In production
,我们还是可以放http://localhost:8080/oauth-authorized/google
下Authorized redirect URIs
没有触发红色错误消息说 Invalid Redirect
. 但是,除非应用程序位于 Testing
中,否则它不起作用地位。
所以为了在 http://127.0.0.1:8000 测试您的应用程序,您需要将您的 GCP 应用带到 Testing
地位
关于python - Google oAuth 2.0 API 身份验证错误 : Error 400 - redirect_uri_mismatch (does not comply with policy) DJANGO APP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68764885/
Build.gradle(Module.app) apply plugin: 'com.android.application' android { compileSdkVersion 26
我尝试将 Gradle 与此“org.jopendocument:jOpenDocument:1.3b1”一起使用,但出现此错误: 此 Gradle 文件 (1) 因以下错误而失败: Error:(2
当我想连接到另一台计算机时,我看到了此错误: SEVERE: Could not create connection XXXXX: XXXXX Error establishing socket to
我有以下类(class): public final class AppConst { private AppConst() {} public static fina
“给定以下两个进程 0 和 1 的算法: Process (i) REPEAT WHILE Interest [j] = 1 DO; START Interest [i]:=1;
我构建了一个简单的 PHP 联系表单,它应该通过 Swift-Mailer 脚本发送邮件。 问题是我一直收到这个错误 Uncaught exception 'Swift_RfcComplianceEx
设置: master master master中的三个mysql组复制节点。 一切正常。我可以添加用户/数据库并插入/更新数据。 每个节点都绑定(bind)到一个私有(private) IP 地址。
几天前我开始使用 Sonarqube,但我对 Javascript 规则“函数名称应符合命名约定”有疑问。 我的一些开发人员不遵守命名函数的命名约定,大多数时候他们这样定义函数: onTextfiel
我正在处理一些遗留代码,遇到了 3 种类似的触发事件结构 命令/遵守 触发器:.command('update:mySetting', newSetting); 句柄:.comply('update:
我需要从给定特定条件的集合中提取许多唯一元素。例如。如果我有一个带有 [ (a1,t1,v1), (a2,t2,v2),...,(an,tx,vy) ] 的集合我想要 a1、t5、v8。 使用 Gua
我目前有一个具有以下样式表的 QToolBar QToolBox::tab { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
当我尝试使用 MySQL 作为数据库启动一个新的 JHipster 应用程序时出现以下错误: 2019-07-30 09:55:40.583 ERROR 35895 --- [-service-tas
Mac OS complie dynamic C lib error (lib function will call in lua) #include "lua.h" #include "lualib
我正在尝试让我的 google 身份验证在请求 Gmail 和日历数据的 Django 应用程序上工作。我已经在 Google 开发人员控制台中设置了 oAuth API 并将其与我的项目相关联,并且
我尝试在 Red Hat 6.6 上安装最新版本的 vim。 我使用下面的脚本来运行配置: # change to folder where vim sources are cd ~/vim # he
我是一名优秀的程序员,十分优秀!