2016-07-18 62 views
1

我試圖從Instagram收回令牌,並遇到一些問題。我使用這個代碼,但我得到這些錯誤:我如何使用ajax recave instagram登錄令牌

SEC7127:重定向被阻止的CORS請求。

SCRIPT7002:XMLHttpRequest:網絡錯誤0x2ef1,由於錯誤00002ef1,無法完成該操作。

$(document).ready(function() { 
 
    var clientId = 'xxx'; 
 
    var clientSecret = 'xxx'; 
 
    var redirectUri = 'http://localhost/instagramFeed/'; 
 
    
 
    function callback(code) { 
 
     $.ajax({ 
 
      type: 'POST', 
 
      client_id: clientId, 
 
      client_secret: clientSecret, 
 
      grant_type: authorization_code, 
 
      redirect_uri: redirectUri, 
 
      code: code, 
 
      success: function(code) { 
 
       console.log('Callbeck success!'); 
 
      }, 
 
      error: function(msg) { 
 
       console.log('Error in callback'); 
 
       console.log(msg); 
 
      } 
 
     }); 
 
    } 
 
    var requestToken = function() { 
 
     var url = 'https://instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirectUri + '&response_type=code'; 
 
     $.ajax({ 
 
      type: 'GET', 
 
      url: url, 
 
      success: function(code) { 
 
       console.log('Success' + code); 
 
       callback(code); 
 
      }, 
 
      error: function(msg) { 
 
       console.log('Error'); 
 
       console.log(msg); 
 
      } 
 
     }); 
 
    }; 
 
    requestToken(); 
 
});
的事情

+0

ajax調用「回調」函數看起來不對。沒有指定URL,並且根據我的看法,「client_id」,「client_secret」,「grant_type」,「redirect_uri」,「code」都不是jQuery ajax方法的有效參數:http://api.jquery .com/jquery.ajax /。他們是否應該成爲與請求一起發送的數據的一部分? – ADyson

+0

也在兩個ajax調用中,「錯誤」函數的簽名都是錯誤的。它應該是函數(jqXHR,textStatus,errorThrown)。請再次參閱http://api.jquery.com/jquery.ajax/。這可能會阻止它向你報告問題。您可以嘗試將它換成類似'function(jQXHR,textStatus,errorThrown){ \t \t \t \t alert(「嘗試聯繫服務器時發生錯誤:」+ jQXHR.status +「」+ textStatus +「」+ errorThrown ); '得到一個更好的報告 – ADyson

+0

我已經評論了整個回調函數()並且仍然是相同的錯誤;現在編輯錯誤處理程序的錯誤是:嘗試聯繫服務器時發生錯誤:0錯誤。但仍然有兩個錯誤,我發佈在問題 –

回答

0

一堆錯了:code將作爲重定向URL網址PARAM到達,你不能讓AJAX GET調用和響應得到code。 而你不能讓服務器顯式oauth登錄只有JavaScript,你必須做服務器端代碼的帖子。

如果你只想使用javascript,那麼你可以使用Instagram支持的oauth2客戶端隱式授予方法,你必須啓用這個應用程序設置。

您只需打開驗證碼response_type=token而不是=code即可。

window.location = 'https://instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirectUri + '&response_type=token' 

只需打開這個網址和登錄之後,access_token將在redirect url

哈希片段抓住它,就必須在重定向URL頁面這個代碼

var access_token = ""; 
if (window.location.hash){ 
    access_token = window.location.hash.split("access_token=")[1]; 
    window.location.hash = ""; 
} 

更多細節在這裏:https://www.instagram.com/developer/authentication/

+0

嘗試此解決方案後出現此錯誤: {「code」:403,「error_type」:「OAuthForbiddenException」,「error_message」:「隱式身份驗證已禁用」} –

+0

啓用它之後,它非常有用! –