如何同时将OAUTH与gapi客户端库一起用于Google Cloud Endpoints和Google Cloud Storage

时间:2013-10-23 14:27:21

标签: javascript google-api google-cloud-storage google-cloud-endpoints google-api-client

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

当您对云端点进行身份验证时,来自Google的示例tic-tac-toe应用程序指出应该将access_token设置为id_token,如下所示(请参阅github repository):

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

然而,一旦access_token设置为id_token,就不能再使用其他google apis了。在我的例子中是Cloud Storage API。原因是访问令牌现在对它们无效。例如,云存储API返回无效凭据。 在access_token设置为id_token之前,access_token如下所示:ya29.AHES6ZTjklghkljghlkjfghkljsrdölizuklhlfghI_UTfghdfghCg。它被我不想在这里发布的id_token所取代,因为它真的很长。

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

  • 复制gapi对象,每个对象都有一个单独的auth-object和token。使用id_token用于云端点,另一个用于其余端点(我无法以尽可能复制对象的方式)
  • 记住某个地方的auth令牌,并根据我调用的api(云端点/其他api)替换它(这可能需要同步并且有些混乱)

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

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

我会在这里留下问题,以防有人在里面搜索条款。

1 个答案:

答案 0 :(得分:1)

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

您可以省略对令牌的操作,它会自动适用于端点以及您呼叫的其他任何Google API。请参阅Python "Hello Endpoints" example了解它的外观(最值得注意的不是它)。