javascript - 使用 Google App Script 对可汗学院 API 的 OAuth1 调用进行身份验证

标签 javascript api oauth google-apps-script

我对编码还很陌生。我正在使用 Google App Script,它应该是基于 javascript 的,并且是一个用于管理 OAuth1 api 身份验证的库。我正在尝试通过可汗学院进行身份验证。我从谷歌应用网站获得的这个脚本在一定程度上起作用。 “listTweets”函数将我带到“else”分支并记录 url 以将我带到可汗学院以授予脚本进行调用的权限。我接受并应该重新运行该函数并最终进入“if-then-else”语句的“then”分支。我只是不断地被发送到其他地方。有谁知道什么给?在此先感谢您的帮助。

var CONSUMER_KEY = 'my key';
var CONSUMER_SECRET = 'my secret';
var PROJECT_KEY = 'my google project key';

function listTweets() {
  var service = getTwitterService();
  if (service.hasAccess()) {
    var response = service.fetch('https://www.khanacademy.org//api/v1/user/exercises');
    var tweets = JSON.parse(response.getContentText());
    Logger.log(tweets);
  } else {
    var authorizationUrl = service.authorize();
    Logger.log('Please visit the following URL and then re-run the script: ' + authorizationUrl);
  }
}

function getTwitterService() {
  var service = OAuth1.createService('twitter');
  service.setAccessTokenUrl('https://www.khanacademy.org/api/auth2/access_token')
  service.setRequestTokenUrl('https://www.khanacademy.org/api/auth2/request_token')
  service.setAuthorizationUrl('https://www.khanacademy.org/api/auth2/authorize')
  service.setConsumerKey(CONSUMER_KEY);
  service.setConsumerSecret(CONSUMER_SECRET);
  service.setProjectKey(PROJECT_KEY);
  service.setCallbackFunction('authCallback');
  service.setPropertyStore(PropertiesService.getScriptProperties());
  service.setOAuthVersion('1.0');
  return service;
}

function authCallback(request) {
  var service = getTwitterService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('Success! You can close this page.');
  } else {
    return HtmlService.createHtmlOutput('Denied. You can close this page');
  }
}

最佳答案

我不熟悉这个特定的 API,但通读了 their documentation ,并寻找 PHP example ,他们似乎希望在 URL 中传递 OAuth 参数,而不是在授权 header 中传递。

默认情况下,OAuth 服务使用授权 header ,但这可以用 service.setParamLocation('uri-query') 覆盖。

关于javascript - 使用 Google App Script 对可汗学院 API 的 OAuth1 调用进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943942/

相关文章:

javascript - 以编程方式添加到 Accordion 部分 Jquery 内的列表项

php - 如何将 Controller 索引函数的参数传递给模型的函数?拉维

python - 调试django-allauth社交网络登录失败

为什么有些API在返回的JSON数据头部加一个while(1);

javascript - jQuery - 通过选择选项加载图像

javascript - 在javascript中查找字符串中最长的单词

django - TastyPie - Override_urls 忽略身份验证和授权

algorithm - 是否有用于根据上下文确定单词类型的算法或 API?

oauth - 当前的 OAuth 1.0 规范 - 它如何解决 session 固定攻击?

spring - CORS 不适用于带有 OAuth2 的 Spring 4.3