2016-07-18 42 views
1

Instagramからトークンを受け取ろうとしていて、何か問題があります。このコードを使用しますが、次のエラーが表示されます。ajaxを使ってinstagram log inトークンを受け取る方法

SEC7127:CORSリクエストでリダイレクトがブロックされました。

SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2ef1、エラー00002ef1のため、操作を完了できませんでした。間違ったことの

+0

"callback"関数のajax呼び出しが間違っています。 URLが指定されておらず、「client_id」、「client_secret」、「grant_type」、「redirect_uri」、「code」のどれもjQuery ajaxメソッドの有効なパラメータです。http://api.jquery .com/jquery.ajax /。それらは要求と共に送られたデータの一部であるべきですか? – ADyson

+0

両方のajax呼び出しでも、 "error"関数の署名が間違っています。関数(jqXHR、textStatus、errorThrown)でなければなりません。再びhttp://api.jquery.com/jquery.ajax/を参照してください。それが問題をあなたに報告するのを妨げる可能性もあります。 "function(jQXHR、textStatus、errorThrown){ \t \t \t alert("サーバーに接続しようとしているときにエラーが発生しました: "+ jQXHR.status +" "+ textStatus +" "+ errorThrown ); \t \t} 'より良いレポートを得るために – ADyson

+0

私は全体のコールバック()とまだ同じエラーをコメントしました。編集されたエラーハンドラで、エラーは次のようになります。サーバーに接続しようとしているときにエラーが発生しました:0エラー。しかし、私は質問に投稿したまだ2つのエラー –

答えて

0

バンチ

$(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(); 
 
});
codeは、リダイレクトURL内のURLのparamとして到着します、あなたは、Ajaxを呼び出し、応答 codeをゲットすることはできません。 そして、あなたはサーバーをoauthに明示的にjavascriptでログインさせることはできません。サーバー側のコードで投稿をしなければなりません。

もしあなたが単にjavascriptを使用したいのであれば、Instagramによってサポートされているoauth2のクライアント暗黙の許可メソッドを使うことができます。これは、これがappの設定です。

=codeの代わりにresponse_type=tokenという認証URLを開いてください。

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

ちょうどこのURLを開いて、ログイン後、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

これを有効にした後、 –

関連する問題