google-cloud-endpoints - 如何从 Chrome 应用程序中使用 Google Cloud Endpoints?

标签 google-cloud-endpoints google-chrome-app google-api-client

我正在构建一个 Chrome 应用,我真的希望它能够通过云端点与我的服务器进行通信,但有两个问题我不确定如何克服:

  1. Google apis javascript 库是一个外部脚本,我无法在 Chrome 应用程序的页面中使用它。我可以复制库的源代码并将其放入应用程序源代码的文件中吗?
  2. 客户端会检查您的 JavaScript 来源,但扩展程序的来源采用 chrome-extension://EXTENSION_ID 格式,开发者控制台不接受该来源作为 JavaScript 来源。

如何解决这些问题?

最佳答案

<强>1。加载gapi客户端

事实上,我发现加载gapi客户端的唯一方法是使用webview,as explained here 。我已经测试过它,它运行良好,但奇怪的是身份验证根本不起作用,并且 Cloud Endpoints 认为您是匿名的。

此外,从 webview 到世界其他地方的通信非常棘手(window.postMessage 不允许在回调中发送响应)。

我认为您最好使用 AJAX 请求直接调用 REST 方法,并使用 jQuery 或其他帮助程序。您只需使用访问 token 设置 Authorization header ,就像 jQuery 中的这样:

 $.ajax({
            type:"GET",
            beforeSend: function (request)
            {
                request.setRequestHeader("Authorization", "Bearer "+THE_ACCESS_TOKEN);
            },
            url: "https://yourapp.appspot.com/_ah/api/yourapi/v1/yourmethod",
            success: function(msg) {
                //Put here your callback
            }
    });

请参阅下文如何获取访问 token 。

<强>2。 Chrome 应用中的授权

您不必担心 Chrome 应用中的原始部分,您只需生成特定于 Chrome 应用的客户端 ID,并使用 Chrome Identity API 获取用户的授权。检查Chrome Identity API文档以获取更多详细信息。

请注意,由于您需要创建新的客户端 ID,因此您需要更新 Google Cloud Endpoint 的配置以将此客户端 ID 添加到授权客户端列表中。

关于google-cloud-endpoints - 如何从 Chrome 应用程序中使用 Google Cloud Endpoints?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767207/

相关文章:

android - 从主屏幕启动时 Cordova 应用程序重新启动

android - GoogleApiClient 构建器构建失败

java - 如何向谷歌云端点添加身份验证?

google-chrome - 如何在 Chrome App 中唯一标识 Chrome OS 设备

google-app-engine - 如何将自定义信息从 App Engine 身份验证器传递到端点?

javascript - 在 Chrome 应用程序关闭应用程序窗口时关闭 Websocket

java - GoogleApiClient 空指针异常

javascript - googleapis npm 模块和 webpack bundle 错误

google-cloud-endpoints - 在谷歌应用程序引擎端点中使用@Nullable注释可选参数会删除参数

android - 如何使用 android studio 3.0 设置 GCE 开发服务器