我正在尝试在第二个类似的应用程序引擎应用程序中执行由我编写的使用端点的一个应用程序引擎应用程序(python)提供的功能。
我目前使用带有 oauth2 的端点在 apppot 上运行两个应用引擎应用程序。我有一个使用端点的工作 javascript 客户端,通过授权和身份验证执行功能。所以我知道后端应用引擎服务器正在工作并且是一个正确暴露的端点。我还可以使用 api explorer 和发现服务浏览 API。
由于这是一个服务器到服务器的链接,我认为服务帐户是我想要用于 oauth2 身份验证的。因此,我在应用引擎控制台的客户端应用中创建了服务帐户。
这是在调用者上运行的代码:
f = file('key2.pem', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
'my-service-account-email-from-caller-app@developer.gserviceaccount.com',
key,
scope='https://my-app-id.appspot.com/_ah/api/my-api/v1')
http = credentials.authorize(httplib2.Http())
service = build("my-api", "v1", http=http)
当我运行此代码时,出现错误:AccessTokenRefreshError: invalid_grant
我尝试了很多其他的事情,将 developerKey 或 discoveryUrl 参数添加到凭据中,仍然无效。我查看了其他看到此错误并尝试弄乱时钟的人,尽管这是服务器到服务器的调用,所以我认为这不是问题。我已将呼叫者的服务帐户电子邮件地址添加到被呼叫者应用的权限中。
我没有找到关于使用服务帐户调用自定义 Endpoints API 的示例应用程序或帖子,仅调用 Youtube 或 Plus 等 Google API,其中大多数都有注册调用应用程序引擎应用程序的方法。
有没有人能够使用 oauth2 在一个应用程序引擎应用程序和另一个应用程序引擎应用程序上调用端点 api 函数?
在此先感谢,-垫