【发布时间】:2012-11-12 01:59:49
【问题描述】:
我正在使用 AppScript 并尝试获取 oAuth 2.0 访问令牌。
那里有任何示例如何在 AppScript 中使用它?
【问题讨论】:
标签: google-apps-script oauth-2.0
我正在使用 AppScript 并尝试获取 oAuth 2.0 访问令牌。
那里有任何示例如何在 AppScript 中使用它?
【问题讨论】:
标签: google-apps-script oauth-2.0
我正在制作一个更简洁的教程版本,但这里有一个简单的 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 保持不变)。
【讨论】:
401. That’s an error. Error: invalid_client no application name。使用您的链接有效。有什么想法吗?
我已经修改了上面的示例以使用新的状态令牌 API 和 CacheService 而不是现在已弃用的 UserProperties。使用状态令牌 API 似乎使事情更安全一些,因为回调 url 将在超时后停止接受状态令牌。
同样的警告也适用。您的重定向 URI 必须添加到开发人员控制台中的(脚本)项目中,同时您必须从控制台中提取 CLIENT_SECRET 和 CLIENT_ID 并将它们粘贴进去。如果您在域中工作,似乎没有对 ScriptApp.getService().getUrl() 将返回什么 URL 有任何保证,所以我基本上让它动态获取地址,然后等待(第二个)重定向失败,然后硬编码生成的 URI。
【讨论】:
请注意,您可以使用这个新 API 构建 OAuth2 流,但它还不是一个完整的示例: https://developers.google.com/apps-script/reference/script/script-app#newStateToken()
特别是,您不应自己将“state”直接传递给 /usercallback URL,因为 OAuth2 服务提供者负责往返“state”参数。 (相反,您将“状态”传递给身份验证 URL,服务提供者会自动将其附加到回调 URL。)
【讨论】: