Instagramのアクセストークンを取得する方法に本当に苦労しています。
新しいクライアントを登録してから、この URL を使用しました
クライアント ID を入力し、URL をリダイレクトします。
その後、URL にコードが表示されたページにリダイレクトされましたが、そこから id がアクセス トークンを取得する場所がわかりません。
Instagramのアクセストークンを取得する方法に本当に苦労しています。
新しいクライアントを登録してから、この URL を使用しました
クライアント ID を入力し、URL をリダイレクトします。
その後、URL にコードが表示されたページにリダイレクトされましたが、そこから id がアクセス トークンを取得する場所がわかりません。
これまでに投稿された返信のほとんどすべては、Instagram のクライアント側の「暗黙の認証」手順に従って、フロント エンドでアクセス トークンを処理する方法のみをカバーしています。Instagram の API ドキュメントによると、この方法は安全性が低く、推奨されていません。
サーバーを使用していると仮定すると、Instagram ドキュメントは、cURL 要求の例のみを示しているため、コードをトークンに交換することについて明確な回答を提供することに失敗しています。基本的に、提供されたコードとアプリのすべての情報を使用してサーバーに POST 要求を行う必要があり、ユーザー情報とトークンを含むユーザー オブジェクトが返されます。
あなたが書いている言語はわかりませんが、ここで見つけることができるリクエストnpmモジュールを使用してNode.jsでこれを解決しました。
URL を解析し、この情報を使用して投稿リクエストを送信しました
var code = req.url.split('code=')[1];
request.post(
{ form: { client_id: configAuth.instagramAuth.clientID,
client_secret: configAuth.instagramAuth.clientSecret,
grant_type: 'authorization_code',
redirect_uri: configAuth.instagramAuth.callbackURL,
code: code
},
url: 'https://api.instagram.com/oauth/access_token'
},
function (err, response, body) {
if (err) {
console.log("error in Post", err)
}else{
console.log(JSON.parse(body))
}
}
);
もちろん、configAuth を独自の情報に置き換えます。Node.js を使用していない可能性がありますが、このソリューションが、独自のソリューションを使用している言語に翻訳するのに役立つことを願っています。
以前も同じ問題が発生しましたが、URL を
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=tokenに変更します
Instagram API は、あなただけでなく、すべての Instagram ユーザーがアプリで認証できるようにするためのものです。Instagram Dev website の指示に従いました。最初の (Explicit) メソッドを使用して、サーバー上でこれを非常に簡単に行うことができました。
ステップ 1)ユーザーがクリックして認証プロセスを開始できるリンクまたはボタンを Web ページに追加します。
<a href="https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code">Get Started</a>
YOUR_CLIENT_ID
アプリを Instagram バックエンドに正常に登録すると、以下で使用されるYOUR_REDIRECT_URI
ものとともに提供YOUR_CLIENT_SECRET
されます。
ステップ 2)アプリ用に定義した URI ( と同じ) でYOUR_REDIRECT_URI
、Instagram サーバーからの応答を受け入れる必要があります。Instagram サーバーはcode
、リクエスト内の変数をフィードバックします。次に、このcode
情報とアプリに関するその他の情報を使用して、サーバーから直接別のリクエストを行い、access_token
. 次のように、Django フレームワークを使用して Python でこれを行いました。
django を次のresponse
関数に誘導しますurls.py
。
from django.conf.urls import url
from . import views
app_name = 'main'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^response/', views.response, name='response'),
]
response
リクエストを処理する関数は次のviews.py
とおりです。
from django.shortcuts import render
import urllib
import urllib2
import json
def response(request):
if 'code' in request.GET:
url = 'https://api.instagram.com/oauth/access_token'
values = {
'client_id':'YOUR_CLIENT_ID',
'client_secret':'YOUR_CLIENT_SECRET',
'redirect_uri':'YOUR_REDIRECT_URI',
'code':request.GET.get('code'),
'grant_type':'authorization_code'
}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
response_string = response.read()
insta_data = json.loads(response_string)
if 'access_token' in insta_data and 'user' in insta_data:
#authentication success
return render(request, 'main/response.html')
else:
#authentication failure after step 2
return render(request, 'main/auth_error.html')
elif 'error' in req.GET:
#authentication failure after step 1
return render(request, 'main/auth_error.html')
これは 1 つの方法にすぎませんが、このプロセスは PHP やその他のサーバー側言語でもほぼ同じです。
Instagram データの使用をアプリケーションに許可すると、アクセス トークンが URI フラグメントとして返されます。次のようになります。
これは私にとってはうまくいきました:
http://jelled.com/instagram/access-token
参考までに、ここにある jQuery Instagram プラグインと組み合わせて使用しました。 http://potomak.github.com/jquery-instagram