¿Cómo puedo obtener un acceso a touth2 to_token usando Python?

Para un proyecto, alguien me dio esta información que he usado en Postman para propósitos de prueba:

En Cartero esto funciona perfectamente.

URL de la autenticación: https://api.example.com/oauth/access_token
URL del token de acceso: https://api.example.com/access_token
ID de cliente: abcde
secreto del cliente: 12345
Nombre del token: access_token
Tipo de subvención: Credenciales del cliente

Todo lo que necesito es recuperar el token de acceso.

Una vez, tengo el token de acceso que puedo continuar.

    Ya probé varios paquetes de Python y algunos códigos personalizados, pero de alguna manera esta tarea aparentemente simple comienza a crear un verdadero dolor de cabeza.

    Un ejemplo lo intenté:

    import httplib import base64 import urllib import json def getAuthToken(): CLIENT_ID = "abcde" CLIENT_SECRET = "12345" TOKEN_URL = "https://api.example.com/oauth/access_token" conn = httplib.HTTPSConnection("api.example.com") url = "/oauth/access_token" params = { "grant_type": "client_credentials" } client = CLIENT_ID client_secret = CLIENT_SECRET authString = base64.encodestring('%s:%s' % (client, client_secret)).replace('\n', '') requestUrl = url + "?" + urllib.urlencode(params) headersMap = { "Content-Type": "application/x-www-form-urlencoded", "Authorization": "Basic " + authString } conn.request("POST", requestUrl, headers=headersMap) response = conn.getresponse() if response.status == 200: data = response.read() result = json.loads(data) return result["access_token"] 

    Entonces tengo este:

     import requests import requests.auth CLIENT_ID = "abcde" CLIENT_SECRET = "12345" TOKEN_URL = "https://api.example.com/oauth/access_token" REDIRECT_URI = "https://www.getpostman.com/oauth2/callback" def get_token(code): client_auth = requests.auth.HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET) post_data = {"grant_type": "client_credentials", "code": code, "redirect_uri": REDIRECT_URI} response = requests.post(TOKEN_URL, auth=client_auth, data=post_data) token_json = response.json() return token_json["access_token"] 

    Si esto funcionara, ¿qué debo poner en el parámetro de code

    Realmente espero que alguien me pueda ayudar aquí.

    Gracias por adelantado.

    Finalmente pude hacerlo

    Este es el código que utilicé:

     class ExampleOAuth2Client: def __init__(self, client_id, client_secret): self.access_token = None self.service = OAuth2Service( name="foo", client_id=client_id, client_secret=client_secret, access_token_url="http://api.example.com/oauth/access_token", authorize_url="http://api.example.com/oauth/access_token", base_url="http://api.example.com/", ) self.get_access_token() def get_access_token(self): data = {'code': 'bar', 'grant_type': 'client_credentials', 'redirect_uri': 'http://example.com/'} session = self.service.get_auth_session(data=data, decoder=json.loads) self.access_token = session.access_token 

    Simplemente (en caso de autenticación de Facebook):

     import requests, json access_token = requests.get("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=your_client_id&client_secret=your_client_secret").json()["access_token"] 

    O puedes usar la biblioteca de rauth .

    En la documentación hay un ejemplo interesante con la autenticación de facebook oAuth2:

     from rauth import OAuth2Service facebook = OAuth2Service( client_id='your_client_id', client_secret='your_client_secret', name='facebook', authorize_url='https://graph.facebook.com/oauth/authorize', access_token_url='https://graph.facebook.com/oauth/access_token', base_url='https://graph.facebook.com/') 

    y después de abrir una sesión:

     session = facebook.get_auth_session(data={'code': 'foo','redirect_uri': redirect_uri}) 

    En la sesión json está tu token de acceso.