无需手动复制即可检索访问令牌

时间:2017-04-26 22:17:59

标签: python oauth python-requests vk

我提出以下要求:

https://oauth.vk.com/authorize?redirect_uri=https%3A%2F%2Foauth.vk.com%2Fblank.html&response_type=token&client_id=5842359&v=5.63&scope=friends%2Coffline&display=page

检索访问令牌。此网址指向vk.com上的登录页面(如果尚未登录),然后提示用户授权应用程序,然后重定向到https://oauth.vk.com/blank.html#access_token= {token}& expires_in = 0& user_id = {id}。因此,要实际检索访问令牌,需要从地址栏手动复制它。此过程在官方API中指定。有办法解决这个问题吗?如何仅使用python代码获取令牌?

以下是生成网址的过程:

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

1 个答案:

答案 0 :(得分:0)

您可以使用授权代码流,其中您收到Auth_code,然后使用此代码来检索access_token。

获取auth_code和access_tokens只是对OAuth服务器的POST请求。

在你的代码中,response_type应该是获取auth代码的代码,然后使用这段代码来检索acccess_token

请参阅此https://vk.com/dev/auth_sites。通常,此流程在任何OAuth提供商上都是相同的。