我正在使用 AppScript 并尝试获取 oAuth 2.0 访问令牌。
那里有任何示例如何使它在 AppScript 中工作?
我正在开发一个更简洁的教程版本,但这里有一个简单的 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 流。查看getAndStoreAccessToken
要点中的函数以获取关键细节。
我希望在接下来的几周内发布此内容,但同时希望这会有所帮助。
更新 - 在 redirect_uri 上添加信息
客户端密钥与授权代码返回到的特定重定向 URI 相关联。
您需要将其设置在 - https://code.google.com/apis/console/
突出显示的 URI 需要与发布的 URI 匹配(以 /exec 结尾)。您可以从 Publish -> Deploy as web app 下的脚本编辑器中获取已发布的 URI。确保在进行更改时保存新版本并发布新版本(发布的 URI 保持不变)。
我修改了上面的示例以使用新的状态令牌 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()
特别是,您不应自己将“状态”直接传递给 /usercallback URL,因为 OAuth2 服务提供者负责往返“状态”参数。(相反,您将“状态”传递给身份验证 URL,服务提供者会自动将其附加到回调 URL。)