使用OAuth 2.0与Google Apps脚本访问Instagram API

3

我正在尝试设置一个定时任务来连接Instagram API、获取‘我的动态’并下载图片。但我无法完成OAuth 2.0步骤。我已经查看了多个资源,包括:

如何从AppScript授权使用OAuth 2.0连接Google APIs?——这些方法已被弃用,我无法让弹出框显示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;
 }
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 Scripts。

如果您只想下载照片,则默认授予的基本范围权限应该足够。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接