【问题标题】:How to authorize with oauth 2.0 from appscript to Google APIs?如何使用 oauth 2.0 从 appscript 授权到 Google API?
【发布时间】:2012-11-12 01:59:49
【问题描述】:

我正在使用 AppScript 并尝试获取 oAuth 2.0 访问令牌。

那里有任何示例如何在 AppScript 中使用它?

【问题讨论】:

    标签: google-apps-script oauth-2.0


    【解决方案1】:

    我正在制作一个更简洁的教程版本,但这里有一个简单的 Gist,它应该为您提供一些关于事情如何工作的示例代码 -

    https://gist.github.com/4079885

    它仍然缺少注销、错误处理和 refresh_token 功能,但至少您应该能够登录并调用受 oAuth 2 保护的 Google API(在本例中是配置文件 API)。

    你可以在这里看到它的实际效果 -

    https://script.google.com/macros/s/AKfycby3gHf7vlIsfOOa9C27z9kVE79DybcuJHtEnNZqT5G8LumszQG3/exec

    关键是使用oAuth 2 Web Server flow。查看要点中的getAndStoreAccessToken 函数以获取关键细节。

    我希望在接下来的几周内发布此内容,但同时希望这会有所帮助。

    更新 - 在 redirect_uri 上添加信息

    客户端密钥与授权代码返回到的特定重定向 URI 相关联。

    您需要将其设置为 - https://code.google.com/apis/console/

    突出显示的 URI 需要与发布的 URI 匹配(以 /exec 结尾)。您可以从 Publish -> Deploy as web app 下的脚本编辑器中获取已发布的 URI。确保在进行更改时保存新版本并发布新版本(发布的 URI 保持不变)。

    【讨论】:

    • 您好 Arun,我已经测试了您的样品,看起来不错。但我得到一个错误无效的redirect_uri。有什么提示吗?
    • 我在上面更新了我的答案,以包含有关在何处确保您的 redirect_uri 与您的密钥匹配的信息。希望对您有所帮助。
    • 嗨,Arun,感谢这个伟大的样本。我得到了它的工作,并认为我可以从那里移动。
    • @ArunNagarajan 只是想知道我们是否会看到这个问题得到修复code.google.com/p/google-apps-script-issues/issues/…
    • 我正在复制粘贴您的要点,但是当我按下“单击此处开始”时,我得到了401. That’s an error. Error: invalid_client no application name。使用您的链接有效。有什么想法吗?
    【解决方案2】:

    我已经修改了上面的示例以使用新的状态令牌 API 和 CacheService 而不是现在已弃用的 UserProperties。使用状态令牌 API 似乎使事情更安全一些,因为回调 url 将在超时后停止接受状态令牌。

    同样的警告也适用。您的重定向 URI 必须添加到开发人员控制台中的(脚本)项目中,同时您必须从控制台中提取 CLIENT_SECRET 和 CLIENT_ID 并将它们粘贴进去。如果您在域中工作,似乎没有对 ScriptApp.getService().getUrl() 将返回什么 URL 有任何保证,所以我基本上让它动态获取地址,然后等待(第二个)重定向失败,然后硬编码生成的 URI。

    https://gist.github.com/mclaughta/2f4af6f14d6aeadb7611

    【讨论】:

      【解决方案3】:

      请注意,您可以使用这个新 API 构建 OAuth2 流,但它还不是一个完整的示例: https://developers.google.com/apps-script/reference/script/script-app#newStateToken()

      特别是,您不应自己将“state”直接传递给 /usercallback URL,因为 OAuth2 服务提供者负责往返“state”参数。 (相反,您将“状态”传递给身份验证 URL,服务提供者会自动将其附加到回调 URL。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 2020-04-11
        相关资源
        最近更新 更多