出现错误:redirect_uri_mismatch 请求中的重定向 URI:http://localhost:8080/oauth2callback 与注册的重定向 URI 不匹配
Posted
技术标签:
【中文标题】出现错误:redirect_uri_mismatch 请求中的重定向 URI:http://localhost:8080/oauth2callback 与注册的重定向 URI 不匹配【英文标题】:Getting Error: redirect_uri_mismatch The redirect URI in the request: http://localhost:8080/oauth2callback did not match a registered redirect URI 【发布时间】:2012-10-24 16:34:56 【问题描述】:我在尝试运行我的应用程序时遇到此错误...
The redirect URI in the request: http://localhost:8080/oauth2callback did not match a registered redirect URI
在 google API 控制台中,我已经注册了我的重定向 url
Redirect URIs: http://localhost:8080/
在 client_secrets.json 中,我也使用与重定向 url 相同的 我正在关注本教程 https://developers.google.com/bigquery/articles/dashboard#addoauth2
编辑:
我只是对现有代码做了一些更改
现在
redirect URIs in API console is http://localhost:8080/oauth2callback
这是我的 app.yaml
application: hellomydashboard
version: 1
runtime: python
api_version: 1
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /oauth2callback
script: oauth2client/appengine.py
- url: .*
script: main.py
现在虽然它没有显示任何错误,但它显示一个空白页。
这是我的 main.py
from bqclient import BigQueryClient
import httplib2
import os
from google.appengine.api import memcache
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from oauth2client.appengine import oauth2decorator_from_clientsecrets
# Project ID for project to receive bill.
# During limited availability preview, there is no bill.
# The value should be your quoted Client ID number
# which you previously recorded from code.google.com/apis/console
# REPLACE THIS NUMBER WITH YOUR CLIENT ID
PROJECT_ID = "My Project ID" #i just replaced dat
DATASET = "samples"
TABLE = "natality"
# CLIENT_SECRETS, name of a file containing the OAuth 2.0
# information for this application.
CLIENT_SECRETS = os.path.join(os.path.dirname(__file__),
'client_secrets.json')
http = httplib2.Http(memcache)
decorator = oauth2decorator_from_clientsecrets(CLIENT_SECRETS,
'https://www.googleapis.com/auth/bigquery')
bq = BigQueryClient(http, decorator)
class MainHandler(webapp.RequestHandler):
@decorator.oauth_required
def get(self):
self.response.out.write("Hello Dashboard!\n")
application = webapp.WSGIApplication([
('/', MainHandler),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
所以根据 main.py,如果一切正常,它必须打印 Hello Dashboard 但它不是
【问题讨论】:
尝试在前一行添加:self.response.headers['Content-Type'] = 'text/plain':self.response.out.write('Hello Dashboard!') 【参考方案1】:您实际上需要将以下内容添加到您的重定向 URI:
http://localhost:8080/oauth2callback
此外,如果上述不匹配,您可能需要在结尾附加 /
:
http://localhost:8080/oauth2callback/
【讨论】:
@jade 为了确定,您在控制台中将其设置为 Web 应用程序,对吗? @jade 现在你是按照教程一步一步来的吗? @jade 看看你刚才问的问题(关于app.yaml
),你的配置是否正确?
我已经更新了我的问题,正如你所说。现在错误没有出现,但我没有得到预期的输出。当我尝试使用尾随 / 的东西作为 localhost:8080/oauth2callback 它显示同样的错误
另外值得注意的是,当您更新开发控制台时,可能需要大约 20 分钟才能赶上。我一切正常,但不知道为什么我仍然收到此错误。【参考方案2】:
在 main.py 函数主类中添加 (decorator.callback_path, decorator.callback_handler()),
并删除
- url: /oauth2callback
script: oauth2client/appengine.py
来自 app.yaml。
PS:如果你有一些代理配置/webcontent-filter,你可能会得到 DownloadError。如果您禁用这些配置或将其部署在 Google Server 上,它将正常工作。
【讨论】:
【参考方案3】:在 main.py 文件中,
在您创建 wsgi 应用程序的部分中
application = webapp.wsgiapplication(
下
添加处理程序
(decorator.callback_path,decorator.callback_handler()),
【讨论】:
【参考方案4】:当我尝试使用 /Authorize 和 /authorize 时,似乎 google 尝试将 url 与区分大小写的原因相匹配,它首先给了我 redirect_uri_mismatch
错误一个,但为后一个工作
如果我错了,请告诉我
【讨论】:
Web URL 的路径部分区分大小写,因此看起来是正确的。【参考方案5】:使用 google openId 我配置了这个
重定向 URI:http://domain.com/authenticate/google
在https://code.google.com/apis/console上,如果您没有应用,则必须创建应用,请注意必须与url完全匹配
【讨论】:
以上是关于出现错误:redirect_uri_mismatch 请求中的重定向 URI:http://localhost:8080/oauth2callback 与注册的重定向 URI 不匹配的主要内容,如果未能解决你的问题,请参考以下文章