Google API return invalid_grant 在生产中但不在本地
Google API return invalid_grant in production but not in local
我在 python 中使用 google API 时遇到一个非常奇怪的异常。目标是在服务器端检查与来自 Android 应用程序的应用程序内订阅相对应的令牌的有效性。
因此,我们有一个服务帐户附加到我们的 Google Play 帐户,我们尝试通过 p12 密钥(转换为 pem 证书以删除通行证)使用 oauth 来验证我们的请求词组):
from apiclient.discovery import build
from httplib2 import Http
from oauth2client.client import SignedJwtAssertionCredentials
with open("googleplay.pem") as f:
private_key = f.read()
credentials = SignedJwtAssertionCredentials(GOOGLE_CLIENT_EMAIL, private_key, scope=['https://www.googleapis.com/auth/androidpublisher'])
http_auth = credentials.authorize(Http())
client = build('androidpublisher', 'v2', http=http_auth)
这在我的电脑上完美运行。但是最后一行在我的服务器上触发了一个异常:invalid_grant
我不明白那是从哪里来的!如果你能帮助我们,那我们就太好了!
我用来将 p12 证书转换为 pem 证书的一些额外代码:
openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem
然后我删除了前 4 行。
提前致谢!
不确定这是否有助于为您提供任何线索。
我最近解决了一个类似错误消息的问题(也包含 "invalid_grant")。我的案例是由于 OAuth2 凭据中缺少 refresh_token 值导致凭据刷新失败。所以我的解决方法是从 google 获取新的刷新令牌。事实证明 google 仅在用户第一次使用 google 授权时分发刷新。除非用户断开应用程序并重新授权。或者在app中设置flow.params['approval_prompt'] = 'force'
(一般用于本地调试)
我的案例是关于 Web 应用程序和 OAuth2 授权的凭据。你的好像是服务账号,所以我不确定你的问题是否也是刷新问题。
我遇到了完全相同的问题。
我通过使用 NTP
同步系统时间来修复它
这仅适用于根服务器。不在虚拟服务器上。
如果您租用虚拟服务器,请联系您的服务器托管提供商。
希望对您有所帮助:)
我在 python 中使用 google API 时遇到一个非常奇怪的异常。目标是在服务器端检查与来自 Android 应用程序的应用程序内订阅相对应的令牌的有效性。
因此,我们有一个服务帐户附加到我们的 Google Play 帐户,我们尝试通过 p12 密钥(转换为 pem 证书以删除通行证)使用 oauth 来验证我们的请求词组):
from apiclient.discovery import build
from httplib2 import Http
from oauth2client.client import SignedJwtAssertionCredentials
with open("googleplay.pem") as f:
private_key = f.read()
credentials = SignedJwtAssertionCredentials(GOOGLE_CLIENT_EMAIL, private_key, scope=['https://www.googleapis.com/auth/androidpublisher'])
http_auth = credentials.authorize(Http())
client = build('androidpublisher', 'v2', http=http_auth)
这在我的电脑上完美运行。但是最后一行在我的服务器上触发了一个异常:invalid_grant
我不明白那是从哪里来的!如果你能帮助我们,那我们就太好了!
我用来将 p12 证书转换为 pem 证书的一些额外代码:
openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem
然后我删除了前 4 行。
提前致谢!
不确定这是否有助于为您提供任何线索。
我最近解决了一个类似错误消息的问题(也包含 "invalid_grant")。我的案例是由于 OAuth2 凭据中缺少 refresh_token 值导致凭据刷新失败。所以我的解决方法是从 google 获取新的刷新令牌。事实证明 google 仅在用户第一次使用 google 授权时分发刷新。除非用户断开应用程序并重新授权。或者在app中设置flow.params['approval_prompt'] = 'force'
(一般用于本地调试)
我的案例是关于 Web 应用程序和 OAuth2 授权的凭据。你的好像是服务账号,所以我不确定你的问题是否也是刷新问题。
我遇到了完全相同的问题。
我通过使用 NTP
同步系统时间来修复它这仅适用于根服务器。不在虚拟服务器上。 如果您租用虚拟服务器,请联系您的服务器托管提供商。
希望对您有所帮助:)