Django allauth与StackExchange:如何设置它



在通过Django allauth成功实现Reddit登录后,我正在尝试使用StackExchange进行同样的操作。

我已经跟随医生了。

1)在我的Django项目中:

我的设置:

...
SOCIALACCOUNT_PROVIDERS = 
    { 'stackexchange':
        { 'SITE': 'stackoverflow' } }
LOGIN_REDIRECT_URL = 'main_page'

我在我的一个模板中使用了链接:

href="{% provider_login_url 'stackexchange' %}"

2)Inhttps://stackapps.com/apps/oauth:

我已经注册了这样的堆叠:

  • 应用程序名称:MyApp描述:MyApp OAuth
  • 域:localhost
  • 应用程序网站:localhost
  • 我已取消选中:"启用客户端OAuth流"one_answers"禁用桌面应用程序OAuth重定向Uri"

3)然后我把http://localhost:8000/admin:

  • 提供程序:堆栈交换
  • 名称:MyApp
  • 客户端id:(堆栈提供的id)
  • 密钥:(堆栈提供的密钥)
  • 选择的网站:example.com

尽管如此,我还是遇到了这个错误:

KeyError at /accounts/stackexchange/login/callback/
'items'

显然,/accounts/stackeexchange/login/recallback/不存在,因为如果我从错误中查找本地变量:

            extra_data = resp.json()['items'][0]
     ...
▼ Local vars
Variable    Value
resp       <Response [400]>

您收到此错误是因为您没有在StackExchange应用程序中指定key参数。转到http://localhost:8000/admin并编辑StackExchange应用程序以包含应用程序密钥。应用程序密钥可以在StackApps.com网站上找到,也就是你获取客户端id和机密的页面。

发生的情况是,django-allauth使用StackExchange提供程序让您登录,并使用由StackExchange返回的访问令牌从/meurl获取数据(这是代码)。要获取数据,它需要访问令牌、应用程序密钥和获取数据的站点。没有密钥,StackExchange API返回

{
    error_id: 405,
    error_message: "`key` is required when `access_token` is passed.",
    error_name: "key_required"
}

如您所见,这本字典中没有关键字items

相关内容

  • 没有找到相关文章

最新更新