2016-06-17 11 views
0

私は、Instagram APIとリクエストを使い、OAuthを超えようとしています。私はr = requests.get(...)を使って、instagramの文書に従ってください。しかし、要求からの出力は決して私が期待するものではありません。私は幾分似ている2つの問題を抱えています。Pythonのリクエストとinstagram

1)私が間違ったパラメータを送信する場合、私はブラウザにr.urlから文字列を貼り付ける場合は、私が見たものである

{"code": 400, "error_type": "OAuthException", "error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"} 

ように見えるJSONを取り戻すことを期待しています。しかしr.json()単に失敗し、私に

JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

2を与える)正しい応答はまた、コードが含まれる、私のリダイレクトURLに私をリダイレクトする必要があります。繰り返しますが、r.urlをブラウザに貼り付けるときに正しく動作します。私は正常にリダイレクトされました。明示的に「allow_redirects=False」と設定しても、リクエストは私をリダイレクトするようには見えません。私は、URLからコードを読み取る必要があります。コードを抽出するための最終的なURLを私に要求するにはどうすればよいですか?

編集:いくつかのコードが含まれている可能性があります。

def get_code(client_id, redirect_uri, scope="basic"): 
    params = {"client_id": client_id, 
       "redirect_uri": redirect_uri, 
       "response_type": "code", 
       "scope": scope} 
    r = requests.get('https://api.instagram.com/oauth/authorize/', 
        params=params) 
    # print r.url 
    # print r.json() 
    return r 
+0

どのように検証していますか?また、ドキュメントへのリンクは良いだろう –

+0

私は、暗黙的と明示的な両方の方法を試みました(これらは本質的にこの手順で同じです)。ここにはドキュメントがあります:https://www.instagram.com/developer/authentication/ – Shatnerz

+0

jsonは、ログインフォームのhtmlであるため、解析されません。ブラウザでinstagram.comのクッキーをクリアしてみると、ログインフォームが表示されます。 –

答えて

1

それは正確に何が起こる、この時点でdocumentationでわかりますあなたが実行した場合、我々は、その後、ログイン画面と彼女のInstagramのデータへのアプリのアクセスを許可する確認画面をユーザに提示します下のスニペットにブラウザのログインボックスが表示されます。

import requests 
import webbrowser 
from tempfile import NamedTemporaryFile 
params = {"client_id": client_id, 
      "redirect_uri": redirect_uri, 
      "response_type": "code", 
      "scope": scope} 
with NamedTemporaryFile(dir=".", delete=0) as f: 
    r = requests.get('https://api.instagram.com/oauth/authorize/', 
        params=params) 
    f.write(r.content) 
    webbrowser.open(f.name) 
関連する問題