75

Instagramのアクセストークンを取得する方法に本当に苦労しています。

新しいクライアントを登録してから、この URL を使用しました

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

クライアント ID を入力し、URL をリダイレクトします。

その後、URL にコードが表示されたページにリダイレクトされましたが、そこから id がアクセス トークンを取得する場所がわかりません。

4

13 に答える 13

12

これまでに投稿された返信のほとんどすべては、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 を使用していない可能性がありますが、このソリューションが、独自のソリューションを使用している言語に翻訳するのに役立つことを願っています。

于 2015-06-03T00:02:35.260 に答える
10

以前も同じ問題が発生しましたが、URL を
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=tokenに変更します

于 2015-03-11T07:36:47.693 に答える
6

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 やその他のサーバー側言語でもほぼ同じです。

于 2016-06-28T15:01:09.850 に答える
2

Instagram データの使用をアプリケーションに許可すると、アクセス トークンが URI フラグメントとして返されます。次のようになります。 ここに画像の説明を入力

于 2013-05-12T15:16:58.697 に答える
0

これは私にとってはうまくいきました:

http://jelled.com/instagram/access-token

参考までに、ここにある jQuery Instagram プラグインと組み合わせて使用​​しました。 http://potomak.github.com/jquery-instagram

于 2013-11-19T12:20:52.957 に答える