我使用OAuth2WebServerFlow获取用户的表格凭据,以便与gdata / spreadsheets API一起使用。我很难诊断问题,因为当我在本地运行应用程序时,它可以完美运行。
这是我用来获取授权网址的代码段:
CLIENT_ID = 'my-id'
CLIENT_SECRET = 'my-secret'
SCOPE = 'https://spreadsheets.google.com/feeds'
flow_object = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, SCOPE, redirect_uri=self.REDIRECT_URL, access_type='online')
authorize_url = flow_object.step1_get_authorize_url()
本地(使用REDIRECT_URL = 'http://localhost:8080/this-path/'
)
这会产生:
https://accounts.google.com/o/oauth2/auth?redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fthis-path%2F&scope=https%3A%2F%2Fspreadsheets.google.com%2Ffeeds&client_id=my-id&response_type=code&access_type=online
在实时App Engine应用程序上(使用REDIRECT_URL = 'http://my-app.appspot.com/this-path/'
)
这会产生:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fspreadsheets.google.com%2Ffeeds&redirect_uri=http%3A%2F%2Fmy-app.appspot.com%2Fthis-path%2F&response_type=code&client_id=my-id&access_type=online
应用程序配置如下:
CLIENT ID: my-id
EMAIL ADDRESS: my-id@developer.gserviceaccount.com
CLIENT SECRET: my-secret
REDIRECT URIS:
http://localhost:8080/
http://my-app.appspot.com
https://my-app.appspot.com
http://my-app.appspot.com/this-path
https://my-app.appspot.com/this-path
http://my-app.appspot.com/this-path/
https://my-app.appspot.com/this-path/
JAVASCRIPT ORIGINS
http://localhost:8080
http://my-app.appspot.com
转到本地生成的url版本,我可以成功授予应用程序权限。但是在我的实时应用程序生成的网址中,我得到了一个401,其中显示"错误:disabled_client OAuth客户端被禁用"。
我觉得它可能只是一个配置错误。也许它在本地工作的事实只是一个红鲱鱼?也许我总是能够授予localhost这些权限?我真的没有这个想法,任何帮助都会受到赞赏。
答案 0 :(得分:0)
在应用程序配置中,重定向网址应该与此http://localhost:8080/ oauth2callback 类似,根据我的理解 oauth2callback 在流程结束时授权令牌。请参阅文档[1]。
[1] OAUTH 2.0 :https://developers.google.com/api-client-library/python/guide/aaa_oauth#OAuth2WebServerFlow