2017-06-14 47 views
1

我正在測試vk.com api以便能夠執行搜索。 我可以得到令牌,但是當我使用它時,它總是返回錯誤:「access_token已過期」 請你能幫我看看代碼是否錯誤,或者是否是vk配置?vk.com獲取令牌總是給access_token已過期

非常感謝您

import vk 
import requests 

url = 'https://oauth.vk.com/access_token?client_id=myClient&client_secret=mySecret&v=5.65&grant_type=client_credentials' 
request = requests.get(url).json() 
access_token = request["access_token"] 

session = vk.Session(access_token) 
api = vk.API(session) 
search = api.search.getHints(q='python') 

錯誤:

File "C:\Users\gabri\AppData\Local\Programs\Python\Python36-32\lib\site-packages\vk\api.py", line 173, in __call__ 
    return self._api._session.make_request(self) 
    File "C:\Users\gabri\AppData\Local\Programs\Python\Python36-32\lib\site-packages\vk\api.py", line 102, in make_request 
    raise error 
vk.exceptions.VkAPIError: 28. Application authorization failed: access_token has expired.. request_params = {'oauth': '1', 'method': 'search.getHints', 'q': 'python'} 
+0

你是如何獲得令牌? –

+0

閱讀有關[此API方法](https://vk.com/dev/search.getHints)的更多信息:您應該授予訪問**朋友和組的權限** –

+0

我詢問您通過什麼步驟獲取it –

回答

2

我們可以手動獲取令牌以下網址

https://oauth.vk.com/authorize?client_id=APPLICATION_CLIENT_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=SCOPE&response_type=token&v=5.65

其中

  • APPLICATION_CLIENT_ID是您的應用程序ID之一,管理的應用程序的完整列表,可以發現here

  • SCOPE是逗號列表分隔permissions

,如果我們看一看有關文檔search.getHints method我們會發現

This method can be called with a user token received in Standalone-app via Implicit Flow. Access rights required: friends and groups.

所以我們SCOPE可能像friends,groups(我們也可以添加offline權限,使「永恆」的道理,但它是不是安全)

因此,我們生成令牌的應用程序ID爲URL = 1可能看起來像

https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,groups&response_type=token&v=5.65

後以下鏈接會出現格式如

accessing request from application

就要檢查一下,這是我們的應用程序,並單擊Allow,在那之後我們將被重定向和令牌將在重定向的頁面網址,以便我們終於可以得到我們的令牌:

redirect