【问题标题】:Accessing Shoeboxed API with Google Apps Script (OAuth v2)使用 Google Apps 脚本 (OAuth v2) 访问 Shoeboxed API
【发布时间】:2014-08-23 00:31:05
【问题描述】:

我正在尝试通过 Google Apps 脚本启动与 Shoeboxed API 的会话。我希望我可以使用 Apps Script 内部库来访问它,但我遇到了问题。这是我的尝试:

function testAPI() {
var consumerKey = '';
var consumerSecret = '';

var oauthConfig = UrlFetchApp.addOAuthService('shoeboxed');
oauthConfig.setAccessTokenUrl(
'https://id.shoeboxed.com/oauth/token');
oauthConfig.setRequestTokenUrl(
'https://id.shoeboxed.com/oauth/token');
oauthConfig.setAuthorizationUrl(
'https://id.shoeboxed.com/oauth/authorize');
oauthConfig.setConsumerKey(consumerKey);
oauthConfig.setConsumerSecret(consumerSecret);

var options = {
  'oAuthServiceName' : 'shoeboxed',
  'oAuthUseToken' : 'always'
};

var url = 'https://api.shoeboxed.com/v2/user';
var response = UrlFetchApp.fetch(url, options);
Logger.log("Response: " + response.getContentText());
}

它在尝试通过 API url 获取用户数据时失败,并带有授权失败消息。我不确定我做错了什么。有关 API 和 OAuth 的信息可以在这里找到:https://github.com/Shoeboxed/api/blob/master/sections/authentication.md

【问题讨论】:

标签: api google-apps-script oauth-2.0


【解决方案1】:

新方法:

该 API 似乎需要 OAuth2,但 UrlFetchApp.addOAuthService 方法仅适用于旧版本的 OAuth。

有一种新方法 ScriptApp.newStateToken() 可以与 OAuth2 结合使用,但它需要对 OAuth2 步骤进行更多手动/显式控制。它生成一个state 令牌。

关于该方法的小细节:

请注意,当您构建 URL 时,state 令牌应作为 .../authorize URL 上的 URL 参数传递,而不是作为 URL 参数嵌入到 .../usercallback URL 中。

例如:

您希望将用户重定向到:

https://id.shoeboxed.com/oauth/authorize?client_id=<your client id>&response_type=code&scope=all&redirect_uri=<your site>&state=<CSRF token>

redirect_uri 在哪里:

https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback

当用户点击授权时,Shoeboxed 应该将他们重定向到:

https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=<CSRF token>

【讨论】:

    【解决方案2】:

    对 shoeboxd API 的 oauth2 支持刚刚添加到 cEzyOauth2 Google Apps 脚本库中。

    您可以将模式复制到您的应用和include the library as described here

    它使用 Steve Lieberman 描述的 statetoken,并自动处理 oauth2 对话、令牌处理和刷新。

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多