我正在构建一个 Chrome 应用,我真的希望它能够通过云端点与我的服务器进行通信,但有两个问题我不确定如何克服:
- Google apis javascript 库是一个外部脚本,我无法在 Chrome 应用程序的页面中使用它。我可以复制库的源代码并将其放入应用程序源代码的文件中吗?
- 客户端会检查您的 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/