这是我多次尝试向https://accounts.spotify.com/api/token.
范围设置为“播放列表-修改-公共,播放列表-修改-私有”。
我使用的是Python 3.7,Django 2.1.3。
无论我做什么,response_data都会返回{'error': 'invalid_client'}
我尝试了很多方法,包括按照Spotify官方文档在请求正文中传递client_id/client_secret...无济于事。
请帮忙!
def callback(request):
auth_token = request.GET.get('code') # from the URL after user has clicked accept
code_payload = {
'grant_type': 'authorization_code',
'code': str(auth_token),
'redirect_uri': REDIRECT_URI,
}
auth_str = '{}:{}'.format(CLIENT_ID, CLIENT_SECRET)
b64_auth_str = base64.b64encode(auth_str.encode()).decode()
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic {}'.format(b64_auth_str)
}
post_request = requests.post(SPOTIFY_TOKEN_URL, data=code_payload, headers=headers)
response_data = json.loads(post_request.text)
# ==> {'error': 'invalid_client'}
这是提到的另一个问题。如果错误是
INVALID_CLIENT: Invalid redirect URI
然后您需要注册URI。引用源代码-将所有内容放在一个位置:
只需登录,找到您的应用程序,然后单击右上角的“编辑设置”。在重定向 URI 下,添加REDIRECT_URI,并记得单击底部的“保存”。这应该可以解决您的问题。
我怀疑您的授权
头中存在无效字符。尝试使用urlsafe_b64encode
而不是b64encode
来准备头值:
b64_auth_str = base64.urlsafe_b64encode(auth_str.encode()).decode()
从文档
发送客户端id和机密的另一种方法是在POST主体中作为请求参数(client_id和client_secret ),而不是在标头中以base64编码发送它们。
SPOTIFY_TOKEN = "https://accounts.spotify.com/api/token"
request_body = {
"grant_type": GRANT_TYPE,
"code": code,
"redirect_uri": REDIRECT_URI,
"client_id": SPOTIFY_CLIENT_ID,
"client_secret": SPOTIFY_CLIENT_SECRET,
}
r = requests.post(url=SPOTIFY_TOKEN, data=request_body)
resp = r.json()
这也很有效。
我正在使用Spotipy python库与Spotify web api进行交互。我已经研究过API和文档,但我没有看到一个清晰的示例来显示该库如何支持授权代码流(https://developer . Spotify . com/we b-API/Authorization-guide/# Authorization-code-flow)。
直截了当的问题,希望有一个直截了当的答案。我试图使用request通过Node.js实现客户端凭证流。这是我的代码 无论我做什么,响应体总是 我尝试过使用 curl 提出请求,结果相同。 这意味着这是凭据的问题。我肯定为我的应用程序使用了正确的客户端ID和客户端秘密,这让我相信是编码导致了问题。 我的编码正确吗?如果是这样,还有什么原因呢?
我想更好地理解隐式授权流和授权代码授权流之间的区别,因为我不确定我目前的理解是否正确。 隐式授权流主要由前端应用程序用于验证用户身份吗? 隐式授权流是否只需要一个client_id、用户名和密码来进行身份验证,换句话说,永远不会发送client_secret? 授权码只是一个短期令牌吗? 将授权码交换为访问令牌后,客户端可以访问用户帐户多长时间?具体地说,如果客户端是一个长时间运行的脚本,那么用户
我是这方面的新手,读了很多之后,我觉得我不太明白如何在Keycloak中实现授权代码流。我的疑惑: > < li> 在创建了支持此流程的客户端后,如何执行凭据验证?默认情况下,如果我不做任何配置,我会得到一个登录表单。如果我在浏览器中打开这个html,并填写用户和密码字段,当我按下按钮时,它会将我发送到一个类型为.../realm/{ REAL _ NAME }/log in-actions/au
我试图复制cognito hosted ui sign in页面(https://docs.aws.amazon.com/cognito/latest/developerguide/login-endpoint.html)的功能,但是aws sdk没有提供任何获取用户名、密码并返回授权代码的方法,这些代码可用于获取Access/ID令牌。initiateAuth和adminInitiateAuth
我用这个代码通过OAuth 2.0授权谷歌 oauthswift=OAuth2Swift(consumerKey:“984813079630-f828a92sqtl5lgumd4kgp9i30bs9og09.apps.googleusercontent.com”,ConsumerCret:“AIzaSyD13MBv78yWIjl4TX9jOOT9AWuEkYdVSPQ”,授权URL:https:/