Oauth2 重定向到无效端口 8080

Oauth2 redirection to invalid port 8080

我的需求是动态给Gmail用户添加图片签名。

仅供参考:以下是我遵循的过程

  1. 在 google 控制台中创建了项目

  2. 按以下方式创建了 Oauth 客户端 ID

    应用程序类型:网络

    授权JavaScript来源:http://localhost

    授权的重定向 URI:http://localhost:3000

  3. 下载为client_request.json

代码如下

'''

 from apiclient import discovery

 from googleapiclient.discovery import build
 from googleapiclient import discovery
 from httplib2 import Http
 from oauth2client import file, client, tools
 from oauth2client.tools import argparser, run_flow
 args = argparser.parse_args()
 from oauth2client.file import Storage
 SCOPES = 'https://www.googleapis.com/auth/gmail.settings.basic'
 STORAGE = Storage('credentials.storage')
 credentials = STORAGE.get()
 creds =None
 args.noauth_local_webserver = True
 http = httplib2.Http()
 if not creds or creds.invalid:
   flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
   creds = tools.run_flow(flow, STORAGE,http=http)
 GMAIL = discovery.build('gmail', 'v1', http=creds.authorize(Http()))
 addresses = GMAIL.users().settings().sendAs().list(userId='me',
    fields='sendAs(isPrimary,sendAsEmail)').execute().get('sendAs')
for address in addresses:
 if address.get('isPrimary'):
    break
signature = {'signature':'<img src="https://server:8000/test.png" alt="asaa" width="100" height="100">'}

 rsp = GMAIL.users().settings().sendAs().patch(userId='me',
    sendAsEmail=address['sendAsEmail'], body=signature).execute()
 print("Signature changed to '%s'" % rsp['signature']) '''

我遇到了两个问题:

1) 在我 运行 上面的代码之后它生成了下面的 URL

https://accounts.google.com/o/oauth2/auth?client_id=123456789123-lkhipfqkk6g224bnf7n9sfdsdfsdss.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.settings.basic&access_type=offline&response_type=code

It is pointing to 8080 inspite specifying 3000 as redirection port

2) I am unable to generate dynamic URL which should be unique for every web request

请提出前进的方向

谢谢

您从 redirect_uri=http://localhost:8080 发送的重定向 uri 必须与您在 google 开发者控制台中添加的重定向 uri 之一完全匹配。

错误消息准确地告诉您您的应用程序正在发送哪个 uri 作为其重定向 uri。你只需要添加它。

It is pointing to 8080 in spite specifying 3000 as redirection port

您仅在 Google 开发者控制台中指定您 从 3000 发送,但您的应用程序似乎是从 8080 发送。

解决方案:将 http://localhost:8080 添加到 google 开发人员控制台作为有效的重定向 uri,或者将您的应用程序更改为从您已添加到 google 开发人员的 http://localhost:3000 发送控制台。