我对Google Drive Picker示例代码的错误是什么?

时间:2016-11-14 20:17:26

标签: javascript python google-drive-api localhost

this page上有一个示例,说明如何在纯JavaScript网页中加入Google云端硬盘选择器。我已将示例代码复制并粘贴到我的计算机上的文件中,并按照说明使用我自己的API密钥,客户端ID和应用程序ID替换示例字符串。

如果我使用python -m SimpleHTTPServer 8000从localhost提供页面并访问该页面,则会以两种方式失败。首先,弹出的Drive对话框显示"出现错误! API开发人员密钥无效。"其次,在控制台上,我看到下面的错误。在网上搜索告诉我,这可能是因为我使用的是非HTTPS连接,Google API会尝试与驱动器建立HTTPS连接。 (与他们的错误似乎相反。)

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin ('http://localhost:8000').
(anonymous) @ cb=gapi.loaded_0:46

Uncaught ReferenceError: init is not defined
    at onload (https://docs.google.com/picker?protocol=gadgets&origin=http%3A%2F%2Flocalho…22%7D))&rpctoken=6pstmf1ss7m2&rpcService=v8gvn97850jj&thirdParty=true:3:54)

如果我使用this handy python script for an SSL web server从localhost提供页面并访问该页面,则会以不同的方式失败。弹出的“驱动器”对话框显示如下。

400. That’s an error.

Error: origin_mismatch
Request Details
        proxy=oauth2relay379676703
        immediate=false
        scope=https://www.googleapis.com/auth/drive
        origin=https://localhost:8000
        response_type=token
        redirect_uri=postmessage
        state=912029351|0.3907265328
        client_id=[REDACTED]
        include_granted_scopes=true
        jsh=m;/_/scs/apps-static/_/js/k=oz.gapi.en.eBn7I_cE2GI.O/m=__features__/am=AQ/rt=j/d=1/rs=AGLTcCNXKKlDNVVUdz0bvaxNh7fYe-hpSQ
        gsiwebsdk=1
That’s all we know.

虽然这似乎表明Drive API不希望收听本地主机,但我已将该应用的凭据(在我的Google开发人员信息中心中)设置为接受来自https://localhost:8000/*和{{}的请求1}}。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您无法使用localhost作为'来源'地址 - 这是Google API的限制。要解决此问题,您可能需要选择this问题中建议的其中一个选项 - 使用URL缩短程序或配置hosts文件以将自定义URL解析为127.0.0.1。