Ich mache die folgende Anfrage:Abrufen von Zugriffstoken ohne manuelles Kopieren
ein Zugriffstoken abzurufen. Diese URL führt zu einer Anmeldeseite auf vk.com (falls nicht bereits angemeldet), fordert einen Benutzer auf, eine Anwendung zu autorisieren, und leitet dann an https://oauth.vk.com/blank.html#access_token= {token} & expires_in = 0 & user_id = {id}. Um ein Zugriffstoken tatsächlich abzurufen, muss es manuell von der Adressleiste kopiert werden. Dieses Verfahren ist in der offiziellen API angegeben. Gibt es einen Weg, dies zu umgehen? Wie bekomme ich ein Token, das nur Python-Code verwendet?
Im Folgenden ist das Verfahren, das die URL erzeugt:
import requests
def authorize_app(client_id, redirect_uri = None):
'''
The function generates an url, which redirects to login page (optional, if not logged in) and app authorization.
'''
if redirect_uri == None:
redirect_uri = 'https://oauth.vk.com/blank.html' # default callback url
oauth = requests.get('https://oauth.vk.com/authorize', params = {'client_id' : str(client_id),
'redirect_uri' : redirect_uri,
'display' : 'page',
'scope' : ['friends,offline'], # offline option makes the token permanent
'response_type' : 'token',
'v' : 5.63})
return oauth.url
Link zur API-Dokumentation und oauth: https://vk.com/dev/access_token – jackdawrites
Kannst du nicht die redirect_uri ändern? Die übliche Vorgehensweise wäre, einen lokalen Webserver zu öffnen (etwa "localhost: 5000") und den Benutzer dort umzuleiten, und den Server dann zu stoppen, sobald er das Token erhalten hat. –
@Rawing danke, ich werde das versuchen. – jackdawrites