0

对于我当前的项目,我想同时使用 Cloud Endpoints 和 Cloud Storage API。

当您对云端点进行身份验证时,来自 Google 的示例井字游戏应用程序指出,应该将 access_token 设置为 id_token,如下所示(参见github 存储库):

var token = gapi.auth.getToken();
// Use id_token instead of bearer token
token.access_token = token.id_token;

但是,一旦将 access_token 设置为 id_token 就不能再使用其他 google api。就我而言,云存储 API。原因是访问令牌现在对他们无效。例如,云存储 api 返回Invalid credential。在将 access_token 设置为 id_token 之前,access_token 如下所示ya29.AHES6ZTjklghkljghlkjfghkljsrdölizuklhlfghI_UTfghdfghCg:它被替换为我不想在这里发布的 id_token,因为它真的很长。

我能想到的两个解决方案是:

  • 复制 gapi 对象,每个对象都有一个单独的身份验证对象和令牌。将带有 id_token 的一个用于云端点,另一个用于其余的(我无法以一种使这成为可能的方式复制对象)
  • 在某处记住身份验证令牌并根据我调用的 api(云端点/其他 api)替换它(这可能需要同步并且有点混乱)

我对这个问题的解决方案和可行的解决方法非常感兴趣。

如果您遇到此问题,请阅读下面的答案和我的评论。完成此操作后,您就会明白这个问题实际上更多是这个问题:How do I test Cloud Endpoints with Oauth on devserver

我将把问题留在这里,以防有人搜索里面的术语。

4

1 回答 1

1

Python Tic Tac Toe 示例似乎需要更新。在这种特殊情况下,不再需要 ID 令牌。(Java 示例使用 Google+ 登录,因此要求略有不同。)

您可以省略对令牌的操作,它将自动适用于 Endpoints 和您正在调用的任何其他 Google API。请参阅Python“Hello Endpoints”示例了解它的外观(最值得注意的是其中没有的内容)。

于 2013-10-23T23:39:38.567 回答