2016-03-31 16 views
3

私はここに記載された指示に従っています:https://api.stackexchange.com/docs/authenticationoauth2を使用してStackExchange APIにアクセスする方法

しかし、コードは提供されていないので、私は正しく流れを理解することができません。

私は以下の2つの方法で認証部分を実行しようとしていましたが、私は致命的でした。

1)

import requests 
from pprint import pprint 

resp = requests.get('https://stackexchange.com/oauth/dialog?client_id=6667&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success/') 
pprint(vars(resp)) 

2)

import oauth2 as oauth 
from pprint import pprint 

url = 'https://www.stackexchange.com' 
request_token_url = '%s/oauth/' % url 
access_token_url = '%s/' % url 

consumer = oauth.Consumer(key='mykey', 
          secret='mysecret') 

client = oauth.Client(consumer) 


response, content = client.request(request_token_url, 'GET') 

print(response, content) 

私はここから前進するかどうかはわかりませんか?私は返されたアクセストークンを使用し、それを使ってAPIに問い合わせる必要があります。サンプルコードは本当に本当に助けになるでしょう!ありがとう。

EDIT:

from requests_oauthlib import OAuth2Session 
from pprint import pprint 

client_id = 'x' 
client_secret = 'x' 
redirect_uri = 'https://stackexchange.com/oauth/login_success' 
scope = 'no_expiry' 

oauth = OAuth2Session(client_id, redirect_uri=redirect_uri, scope=scope) 

pprint(vars(oauth)) 

authorization_url, state = oauth.authorization_url('https://stackexchange.com/oauth/dialog') 

print(authorization_url) 

を代わりにauthorization_urlをクリックしてトークンを取得するので、私が直接スクリプト自体の中にトークンを取得することができる方法があります:これは私が現在使用しているコードです?

答えて

2

使用した2つの方法のうち、最初はデスクトップアプリケーションの推奨方法です。おそらく正しいでしょう。

OAuthは、ユーザーが特定のWebページに移動し、アプリケーションがデータにアクセスするために(通常はボタンをクリックして)アクセス権を付与していることを確認することを目的としています。印刷するHTTPレスポンスは、ユーザーが受け入れをクリックする必要のあるWebページにすぎません。

フローの感触を得るには、アドレスバーに最初のアドレス(https://stackexchange.com/oauth/dialog?client_id=6667&scope=&redirect_uri=https://stackexchange.com/oauth/login_success/)を置き、読み込まれたページで[承諾]をクリックします。 access_tokenはその直後のURLに表示されます。

自分でアプリケーションを作成する場合は、access_tokenをPythonスクリプトにコピーすることができます。トークンは1日で失効します。それが短すぎる場合は、最後に永遠になるようにno_expirescopeを追加してください。あなたのアカウントの詳細にアクセスできるので、他の人とトークンを共有しないでください!スクリプトの各ユーザーは、独自のトークンを生成する必要があります。あなたのアプリのkeyとあなただけのURLに得access_tokenに挿入することで

テストaccess_token:あなたはより自動化、統合、ユーザーフレンドリーなソリューションが必要な場合はhttps://api.stackexchange.com/2.2/me?key=key&site=stackoverflow&order=desc&sort=reputation&access_token=&filter=default

、私は開くことがselenium webdriverになりますブラウザウィンドウを開き、結果の資格情報を取得します。

+0

ありがとうございます! OPで私の編集を確認できますか?トークンを取得するプロセスを自動化するにはどうすればよいですか? – 90abyss

+0

私が言及したように、私はそれを自動化するためにセレンのwebdriverを見ます。私は同様の状況を説明している[PhantomJS through selenium](http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python)のSOの質問を参照します。さらなる情報が必要な場合は、新しい質問になるはずです。あなたの要件について言及してください:それは完全にヘッドレスでなければならないのですか、またはGUIが許可されていますか?追加のソフトウェアをインストールすることはできますか、それとも純粋なPythonである必要がありますか? –

関連する問題