https://github.com/soundcloud/soundcloud-python
我正在使用上面的Python包装器,我正在努力获取访问令牌。
import soundcloud
client = soundcloud.Client(
client_id=YOUR_CLIENT_ID,
client_secret=YOUR_CLIENT_SECRET,
redirect_uri='http://yourapp.com/callback'
)
redirect(client.authorize_url())
我能够达到这一点,并且它成功地允许用户进行授权。但是我很遗憾我应该如何获得访问令牌。
access_token, expires, scope, refresh_token = client.exchange_token(
code=request.args.get('code'))
render_text("Hi There, %s" % client.get('/me').username)
当我使用它时,它会给我一个500错误。
答案 0 :(得分:0)
在redirect client.authorize_url()
上,用户将被重定向到浏览器中的SoundCloud连接屏幕,并被要求通过您的应用程序授权他们的帐户。
如果用户批准了授权请求,则会将其发送到redirect_uri
中指定的redirect_uri='http://yourapp.com/callback'
。从那里,您可以从查询字符串中提取代码参数,并使用它来获取访问令牌。
import soundcloud
# create client object with app credentials
client = soundcloud.Client(client_id='YOUR_CLIENT_ID',
client_secret='YOUR_CLIENT_SECRET',
redirect_uri='http://example.com/callback')
# exchange authorization code for access token
code = params['code']
access_token = client.exchange_token(code)
答案 1 :(得分:0)
您可以使用selenium webdriver
#!/usr/bin/env python
# coding=utf-8
import soundcloud
from selenium import webdriver
driver = webdriver.Firefox(
executable_path='<YOUR_PATH_TO>/geckodriver')
CLIENT_ID='<YOUR_CLIENT_ID>'
CLIENT_SECRET='<YOUR_CLIENT_SECRET>'
REDIRECT_URL='<YOUR_REDIRECT_URL>'
client = soundcloud.Client(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
redirect_uri=REDIRECT_URL)
AUTH_URL = client.authorize_url()
driver.get(AUTH_URL) ## open Firefox to access Soundcloud
code = raw_input("WAITING FOR ACCESS... type ENTER")
code = driver.current_url.replace(REDIRECT_URL+'/?code=','')[:-1]
ACCESS_TOKEN = client.exchange_token(code).access_token
USER = client.get('/me').permalink
FILE = "SOUNDCLOUD.%s.access_token" % USER
FILE_W = open(FILE,'w')
FILE_W.write(ACCESS_TOKEN)
FILE_W.close()
driver.quit()
打开浏览器窗口,登录soundcloud帐户并获取代码。
geckodriver
也许你需要获得access_token
,你可以谷歌找到你的操作系统。
请注意,此refresh_token
未过期。您不需要from pprint import pprint
[...]
code = driver.current_url.replace(REDIRECT_URL+'/?code=','')[:-1]
TOKEN_OBJECT = client.exchange_token(code)
pprint (vars(TOKEN_OBJECT))
ACCESS_TOKEN = TOKEN_OBJECT.access_token
[...]
。
您可以使用以下命令打印完整的响应对象:
$sql = "SELECT name,page FROM menu WHERE permid & ".getuserdets($liuid,'page_access');