2016-11-20 4 views
0

Folgen Sie einem Tutorial über die Verwendung von Requests und für Web Scraping. Ich versuche, auf Informationen von www.showmyhomework.com Website zuzugreifen, aber ich glaube, dass die Website OAuth2 Autorisierung verwendet. Leider behandelt das Tutorial nicht, wie dies mit Seiten mit OAuth2 zu tun ist. Habe Stunden damit verbracht, die OAuth2 Dokumentation zu lesen, kann aber nicht herausfinden, wie ich mein Python-Skript dazu bringen kann, ein Token anzufordern und Zugriff auf die Webseite zu bekommen. Das Python-Skript unten ist von der OAuth2 Dokumentation, aber ich mache eindeutig etwas falsch!Verwendung von requests_oauthlib für den Zugriff auf OAuth2 Webseite

from oauthlib.oauth2 import LegacyApplicationClient 
from requests_oauthlib import OAuth2Session 

client_Id = 'My_Google_supplied_OAuth2_Client_Id.apps.googleusercontent.com' 
client_Secret = 'My_Google_supplied OAuth Client_Secret' 
redirect_uri = 'https://your.callback/uri' 

oauth = OAuth2Session(client=LegacyApplicationClient(client_id=client_Id)) 
token = oauth.fetch_token(token_url='https://www.showmyhomework.com/oauth2/token', 
      username="My_Username", password="My_Password", client_id=client_Id, 
      client_secret=client_Secret) 
print(token) 

ich diese Fehler als Antwort:

=================== RESTART: E:/Programs/Python27/Auth.py =================== 

Traceback (most recent call last): 
    File "E:/Programs/Python27/Auth.py", line 11, in <module> 
    client_secret=client_Secret) 
    File "E:\Programs\Python27\lib\site-packages\requests_oauthlib\oauth2_session.py", line 244, in fetch_token 
    self._client.parse_request_body_response(r.text, scope=self.scope) 
    File "E:\Programs\Python27\lib\site-packages\oauthlib\oauth2\rfc6749\clients\base.py", line 409, in parse_request_body_response 
    self.token = parse_token_response(body, scope=scope) 
    File "E:\Programs\Python27\lib\site-packages\oauthlib\oauth2\rfc6749\parameters.py", line 376, in parse_token_response 
    validate_token_parameters(params) 
    File "E:\Programs\Python27\lib\site-packages\oauthlib\oauth2\rfc6749\parameters.py", line 386, in validate_token_parameters 
    raise MissingTokenError(description="Missing access token parameter.") 
MissingTokenError: (missing_token) Missing access token parameter. 

Antwort

0

ich das gleiche Problem haben, und ich beschlossen, es von auth=False in fetch_token hinzufügen.

oauth = OAuth2Session(client=LegacyApplicationClient(client_id=client_Id)) 
token = oauth.fetch_token(token_url='https://www.showmyhomework.com/oauth2/token', 
     username="My_Username", password="My_Password", client_id=client_Id, 
     client_secret=client_Secret, auth=False) 

Viel Glück.

+0

Warum müssen wir diese Flagge zuerst setzen? –

Verwandte Themen