3

我正在尝试设置一个 chron 作业以连接到 instagram API,获取“我的提要”并下载图像。我无法通过 OAuth 2.0 步骤。我已经查看了许多资源,包括:

如何使用 oauth 2.0 从 appscript 授权到 Google API?- 方法已被弃用,我无法让 oauth 出现弹出窗口。

https://code.google.com/p/google-apps-script-issues/issues/detail?id=2580以及讨论中的所有链接。我无法弄清楚如何在没有 html 页面的情况下应用它。

http://www.googleappsscript.org/home/downloading-instagram-photos-to-your-google-drive-using-google-apps-script适用于哈希标签,但我希望能够获得提要从我的用户帐户。

任何帮助将不胜感激,这是我能想到的最好的,如果我能让弹出窗口工作,我会很高兴,但我不能。

function startInstagram () {
    var redurl = getCallbackURL(getInstagram);
    var consumerKey = '#######';
    var consumerSecret = '#######';
    var parameters = {
        method : 'post',
        payload:   
'grant_type=authorization_code'+'&client_id='+consumerKey+'&client_secret='+consumerSecret+'&grant_type=authorization_code&redirect_uri='+redurl+'&response_type=token'
       };
      var token = UrlFetchApp.fetch('https://api.instagram.com/oauth/authorize/', parameters).getContentText();
      Logger.log(['token', token]);
    }

function getInstagram (vars) {
  var res = {};
  Logger.log(['get', vars]);
  return;
}
function getCallbackURL(callbackFunction) {
   var scriptUrl = 'https://script.google.com/d/<ID>';
   var urlSuffix = '/usercallback?state=';
   var stateToken = ScriptApp.newStateToken()
       .withMethod(callbackFunction)
       .withTimeout(60*10*5)
       .createToken();
  return scriptUrl + urlSuffix + stateToken;
 }
4

1 回答 1

2

有一个 GitHub 存储库,描述了在 Apps Script 中使用 OAuth2的库。在其 README 文件中,它展示了如何使用带有 Drive API 的库作为示例。如果您在示例代码中将 Instagram API 替换为 Drive,您应该接近您需要的内容。

Instagram API 授权文档涵盖了获取访问令牌所需执行的大部分操作——这些步骤与 GitHub 库中的说明平行 。

您需要确保您的脚本是在 Instagram 注册的应用程序,以便您可以获取客户端 ID 和客户端密码,然后您可以设置重定向 URI,其格式为

https://script.google.com/macros/d/{PROJECT KEY}/usercallback

适用于 Apps 脚本。

如果您只对下载照片感兴趣,则基本范围权限(默认授予)应该足够了。

获得有效的访问令牌后,您应该能够使用UrlFetchApp.fetch()从 Instagram API 发出请求。

于 2014-11-04T23:35:01.880 回答