2016-04-27 9 views
1

リクエストとInstagram APIを使用して単純なノードアプリケーションを構築していますが、oauthプロセスの最終ステップでinstagramアクセストークンを呼び出そうとしています。なんらかの理由でInstagamのapiが400の応答で応答していますが、私のclient_idがリクエストボディに明示的に指定されている場合は指定されていません。 HEREノード内の要求モジュールを使用してInstagramアクセストークンを取得できません

https://www.instagram.com/developer/authentication/が私の要求コードです:HERE

var options = { 
    url: "https://api.instagram.com/oauth/access_token", 
    method: 'POST', 
    oauth: { 
    "client_id": process.env.CLIENT_ID, 
    "client_secret": process.env.CLIENT_SECRET 
    }, 
    json: { 
    "client_id": process.env.CLIENT_ID, 
    "client_secret": process.env.CLIENT_SECRET, 
    "grant_type" : "authorization_code", 
    "code" : response.req.query.code, 
    "redirect_uri" : 'http://127.0.0.1:5000/redirect' 
    } 
}; 

request(options, function (error, response) { 
    if(error) { console.log(error); } 
    else { console.log(JSON.stringify(response)); } 
}); 

応答である:

{"statusCode":400,"body":{"code":400,"error_type":"OAuthException","error_messag 
e":"You must provide a client_id"},"headers":{"content-language":"en","expires": 
"Sat, 01 Jan 2000 00:00:00 GMT","vary":"Cookie, Accept-Language","pragma":"no-ca 
che","cache-control":"private, no-cache, no-store, must-revalidate","date":"Wed, 
27 Apr 2016 05:37:03 GMT","content-type":"application/json","set-cookie":["csrf 
token=456dc5df05f5b0aad286723004e395fe; expires=Wed, 26-Apr-2017 05:37:03 GMT; M 
ax-Age=31449600; Path=/","mid=VyBP_wAEAAGhT9YCRDGVBM6tksC7; expires=Tue, 22-Apr- 
2036 05:37:03 GMT; Max-Age=630720000; Path=/"],"connection":"close","content-len 
gth":"94"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"hos 
t":"api.instagram.com","port":443,"hostname":"api.instagram.com","hash":null,"se 
arch":null,"query":null,"pathname":"/oauth/access_token","path":"/oauth/access_t 
oken","href":"https://api.instagram.com/oauth/access_token"},"method":"POST","he 
aders":{"accept":"application/json","content- type":"application/json","content-l 
ength":223,"Authorization":"OAuth oauth_client_id=\"[THE ACUAL RESPONSE  DISPLAYS ID HERE]\",oauth_client_secret=\"[THE ACTUAL RESPONSE DISPLYS SECRET  HERE]\",oauth_nonce=\"cc 
173578667148d1bdf341926b9e2cd0\",oauth_signature_method=\"HMAC-SHA1\",oauth_time 
stamp=\"1461735413\",oauth_version=\"1.0\",oauth_signature=\"zeQxrYVNSsveztczszW 
FiY3jGz8%3D\""}}} 

答えて

0

は、私は、環境変数process.env.CLIENT_ID doesntのだと思います。ここのInstagramのOAuthプロセスへのリンクです価値がある。 process.env.CLIENT_IDとprocess.env.CLIENT_SECRETの代わりにハードコーディングされた文字列を使用してみてください

+0

環境変数は、自分のIDとシークレットの文字列としてログに記録されていないので、間違いなく定義されていません。リクエストの本文に指定している方法でもかまいませんか? – nivo1000

0

私は他のapisとの間にもこれを苦労していました。しかし、これはすべてのapi oAuth 2要求に対してはうまく機能します。

request.post({url:'https://api.instagram.com/oauth/access_token', form: { 
    redirect_uri: 'http://localhost/dashboard', 
    client_id: 'xxxxxxxxxxx', 
    client_secret: 'xxxxxxxxxxxxx', 
    code: 'xxxxxxxxxxxxxxx', 
    grant_type: 'authorization_code' 
} 
}, function(err,httpResponse,body){ /* ... */ 
console.log('err: ' + err) 
console.log('body: ' + body) 
}) 

私はときにXAMPPを使用している場合、あなたは常にhttp://localhost/dashboardにリダイレクトされますので、http://localhost/dashboard
ドントだけhttp://localhostを使用するアプリを登録するとしても、リダイレクトURLを使用して、これはあなたのcan'tからコードを取得意味します
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

関連する問題