Django allauth与StackExchange:如何设置?
在通过Django allauth成功实现Reddit登录后,我将尝试对StackExchange进行同样的操作 为此,我一直遵循规则 1)在我的Django项目中: 我的设置:Django allauth与StackExchange:如何设置?,django,oauth,django-allauth,stackexchange-api,Django,Oauth,Django Allauth,Stackexchange Api,在通过Django allauth成功实现Reddit登录后,我将尝试对StackExchange进行同样的操作 为此,我一直遵循规则 1)在我的Django项目中: 我的设置: ... SOCIALACCOUNT_PROVIDERS = \ { 'stackexchange': { 'SITE': 'stackoverflow' } } LOGIN_REDIRECT_URL = 'main_page' 我在我的一个模板中使用了链接: href=“{%provider
...
SOCIALACCOUNT_PROVIDERS = \
{ 'stackexchange':
{ 'SITE': 'stackoverflow' } }
LOGIN_REDIRECT_URL = 'main_page'
我在我的一个模板中使用了链接:
href=“{%provider\u login\u url'stackexchange%}”
2)输入:
我已注册到stackapps,如下所示:
- 应用程序名称:MyApp说明:MyApp OAuth
- 域:本地主机
- 应用网站:localhost
- 我已取消选中“启用客户端” OAuth流”和“禁用桌面应用程序OAuth重定向Uri”
- 提供者:堆栈交换
- 名称:MyApp
- 客户端id:(stackapps提供的id)
- 密钥:(stackapps提供的密钥)
- 所选网站:example.com
KeyError at /accounts/stackexchange/login/callback/
'items'
显然,/accounts/stackexchange/login/callback/不存在,因为如果我从错误中查找本地变量:
extra_data = resp.json()['items'][0]
...
▼ Local vars
Variable Value
resp <Response [400]>
extra_data=resp.json()['items'][0]
...
▼ 局部变量
可变值
响应
您收到此错误是因为您没有在StackExchange应用程序中指定键
参数。转到http://localhost:8000/admin
并编辑StackExchange应用程序以包含应用程序密钥。应用程序密钥可在StackApps.com网站上找到,与您获取客户id和密码的页面相同
发生的情况是,django allauth
使用StackExchange provider让您登录,并使用StackExchange返回的访问令牌,从/me
url获取数据(以下是示例)。要获取数据,它需要访问令牌、应用程序密钥和从中获取数据的站点。如果没有密钥,StackExchange API将返回
{
error_id: 405,
error_message: "`key` is required when `access_token` is passed.",
error_name: "key_required"
}
如您所见,此词典中没有键
项
。由于您没有在StackExchange应用程序中指定键
参数,因此出现此错误。转到http://localhost:8000/admin
并编辑StackExchange应用程序以包含应用程序密钥。应用程序密钥可在StackApps.com网站上找到,与您获取客户id和密码的页面相同
发生的情况是,django allauth
使用StackExchange provider让您登录,并使用StackExchange返回的访问令牌,从/me
url获取数据(以下是示例)。要获取数据,它需要访问令牌、应用程序密钥和从中获取数据的站点。如果没有密钥,StackExchange API将返回
{
error_id: 405,
error_message: "`key` is required when `access_token` is passed.",
error_name: "key_required"
}
如您所见,此词典中没有键项