2014-09-29 40 views
2

我想設置一個時鐘作業連接到Instagram API,抓住'我的飼料'並下載圖像。我無法通過OAuth 2.0步驟。我已經看過一些資源,其中包括:使用OAuth 2.0和谷歌應用程序腳本訪問Instagram API

How to authorize with oauth 2.0 from appscript to 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

有一個GitHub存儲庫,描述一個庫爲using OAuth2 in Apps Script。在其自述文件中,它以Drive API爲例展示瞭如何使用該庫。如果您在示例代碼中將Drive API替換爲Drive,則應該接近您的需求。

Instagram API Authorization docs涵蓋了大部分需要做的事情來獲取訪問令牌 - 這些步驟與GitHub庫中的指令並行。

你需要make sure your script is a registered application with Instagram,讓你可以在客戶端ID和客戶端密鑰,所以你可以設置重定向URI,這將是形式

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

爲應用程序的腳本。

如果你只是有興趣下載你的照片,基本範圍權限(默認授予)應該是足夠的。

一旦你有一個有效的訪問令牌,你應該能夠使用UrlFetchApp.fetch()從Instagram API發出請求。