对于我当前的项目,我想同时使用 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
我将把问题留在这里,以防有人搜索里面的术语。