Python 在不手动复制的情况下检索访问令牌

Python 在不手动复制的情况下检索访问令牌,python,oauth,python-requests,vk,Python,Oauth,Python Requests,Vk,我提出以下要求: 检索访问令牌。此url将在vk.com上显示一个登录页面(如果尚未登录),然后提示用户授权应用程序,然后重定向到{token}&expires\u in=0&user\u id={id}。因此,要实际检索访问令牌,需要从地址栏手动复制它。官方API中规定了该程序。有办法解决这个问题吗?如何仅使用python代码获取令牌 以下是生成url的过程: import requests def authorize_app(client_id, redirect_uri = None)

我提出以下要求:

检索访问令牌。此url将在vk.com上显示一个登录页面(如果尚未登录),然后提示用户授权应用程序,然后重定向到{token}&expires\u in=0&user\u id={id}。因此,要实际检索访问令牌,需要从地址栏手动复制它。官方API中规定了该程序。有办法解决这个问题吗?如何仅使用python代码获取令牌

以下是生成url的过程:

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

您可以使用授权代码流,在该流中接收授权代码,然后使用该代码检索访问令牌

获取auth_代码和access_令牌只是对OAuth服务器的POST请求

在代码响应中,类型应该是获取身份验证代码的代码,然后使用此代码检索访问令牌


参考这个。通常,此流在任何OAuth提供程序上都是相同的。

您可以使用授权代码流,在该流中接收身份验证代码,然后使用此代码检索访问令牌

获取auth_代码和access_令牌只是对OAuth服务器的POST请求

在代码响应中,类型应该是获取身份验证代码的代码,然后使用此代码检索访问令牌


参考这个。通常,此流在任何OAuth提供程序上都是相同的。

链接到API文档和OAuth:您不能更改重定向uri吗?通常的过程是打开一个本地Web服务器(比如在
localhost:5000
)并将用户重定向到那里,然后在服务器收到令牌后停止服务器。@谢谢,我会试试。链接到API文档和oauth:您不能更改重定向uri吗?通常的过程是打开一个本地Web服务器(比如在
localhost:5000
)并将用户重定向到那里,然后在服务器收到令牌后停止该服务器。@Rawing谢谢,我会试试的。但是url中也提供了获取访问令牌的代码,因为我使用url作为重定向uri,所以只能通过浏览器的地址栏访问。我的问题是我是否可以从url获取此代码?是的,有一些方法可以实现这一点。一种方法是使用python创建一个httpserver,它在一个端口上侦听ex:localhost:8080。完成身份验证后,将重定向_uri发送到localhost:8080。一旦重定向到那里,就可以从查询字符串参数中获取代码。如果您使用response_type=access_token直接检索access_token,那么您可以使用上面相同的代码片段向服务器发送请求,并在python代码中获取access_token。但是,获取access_token的代码也在url中提供,因为我将其用作重定向你的uri。我的问题是我是否可以从url获取此代码?是的,有一些方法可以实现这一点。一种方法是使用python创建一个httpserver,它在一个端口上侦听ex:localhost:8080。完成身份验证后,将重定向_uri发送到localhost:8080。一旦重定向到那里,就可以从查询字符串参数中获取代码。如果您使用response\u type=access\u-token直接检索access\u-token,那么您可以使用上面相同的代码段向服务器发送请求,并在python代码中获取access\u-token。