- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
单击登录表单中的 facebook 登录按钮会正确显示 fb 登录弹出窗口,但在输入凭据后弹出窗口关闭并且没有任何反应。
在不重新加载页面的情况下再次单击按钮确认 fb 帐户已连接,因为浏览器控制台打印:
FB.login() called when user is already connected.
然而,用户数据库中没有新条目出现,用户没有被重定向,也没有登录。所以问题似乎出在 AllAuth 处理事情的方式上。但是在后端的任何地方都没有出现任何调试信息,这使得这有点难以弄清楚。
这是 allauth 设置:
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'
DEFAULT_FROM_EMAIL = "[removed for stackoverflow]"
ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = "mandatory"
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = \
{'facebook':
{'METHOD': 'oauth2',
'SCOPE': ['email','public_profile', 'user_friends'],
'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
'FIELDS': [
'id',
'email',
'name',
'first_name',
'last_name',
'verified',
'locale',
'timezone',
'link',
'updated_time'],
'EXCHANGE_TOKEN': True,
'VERIFIED_EMAIL': False,
'VERSION': 'v2.4'}}
这是登录页面上的js:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[removed for stackoverflow]',
xfbml : true,
version : 'v2.10'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
最佳答案
首先,安装django-allauth
$(venv) pip3 install django-allauth
现在将这些代码放在您安装的应用程序中的 settings.py 中
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
此外,将代码放在您的 settings.py 中
AUTHENTICATION_BACKENDS = (
'allauth.account.auth_backends.AuthenticationBackend',
'django.contrib.auth.backends.ModelBackend',
)
也把这些放在settings.py中
SOCIALACCOUNT_PROVIDERS = \
{'facebook':
{'METHOD': 'oauth2',
'SCOPE': ['email','public_profile', 'user_friends'],
'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
'FIELDS': [
'id',
'email',
'name',
'first_name',
'last_name',
'verified',
'locale',
'timezone',
'link',
'gender',
'updated_time'],
'EXCHANGE_TOKEN': True,
'LOCALE_FUNC': lambda request: 'kr_KR',
'VERIFIED_EMAIL': False,
'VERSION': 'v2.4'}}
ID and Key can be found at https://developers.facebook.com/ create an app and go to DashBoard, you’ll see your’s
#facebook
SOCIAL_AUTH_FACEBOOK_KEY = 'secret!' # App ID
SOCIAL_AUTH_FACEBOOK_SECRET ='secret!' #app key
你可能想添加这个
LOGIN_REDIRECT_URL = "/"
#if you succeed in login, you'll be redirected to the main page.
现在我们需要修改urls.py 将这段代码添加到你的urlpatterens
url(r'^accounts/',include('allauth.urls')),
Now go back to https://developers.facebook.com/ go to settings ,click “Add platform”, click website, put http://localhost:8000/ and click the quick start button. keep going and do what dev.facebook leads to.
现在你需要在settings.py中设置你的站点id
#site id
SITE_ID = <your local host site id> #i.e http://localhost:8000
# for the dev mode, you need to use localhost's id facebook does not support the name 127.0.0.1:8000
#little options for your page's signup.
ACCOUNT_EMAIL_REQUIRED=True
我们需要在我们的 django 管理中注册我们的站点 ID 和社交应用程序先做migration & runserver
$(venv) python3 manage.py migrate
转到http://localhost:8000/admin/然后点击站点 ID将 example.com 更改为 http://localhost:8000 (如果您已经处于生产级别,您可能只使用页面的 IP 或域。)
保存应用程序后,我们就可以使用 facebook 登录了。将这些模板标签放在您希望用户登录的 html 顶部。
{% load socialaccount %}
{% providers_media_js %}
你可以在你想做登录按钮的地方写下这个确切的位置
<a href="{% provider_login_url "facebook" method="js_sdk" %}">Login Button image</a>
这会将您的请求发送到处理您的登录程序的帐户/登录页面。
Reference: https://medium.com/@jinkwon711/django-allauth-facebook-login-b536444cbc6b
关于javascript - 调试 AllAuth : social account not logging user in despite connecting successfully,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46001809/
问题:假设我们有一个名为success 的C++ 字符串。 &success 和 success& 有什么区别? 这题是我期中复习的,我理解&success是获取对象的地址。但我不确定 success
我正在阅读 gearman 代码的手册页( http://manpages.ubuntu.com/manpages/precise/man3/gearman_success.3.html )。他们有两
在 Angular 中,[class]="'success'" 和 class="success" 有区别吗? 例如: ... 或 ... 如果同时使用 IIUC 后者会导致替换前者,所以我想更好
当我查看日志文件时 D:\SAS\XXX\Lev1\SASMain\BatchServer\Logs 我看到了这两行 NOTE: Libref TESTLIB successfully assigne
我正在努力完成这项工作: $http.post('/route/path', {'username': $scope.threadedUsers[currentIndex].name}). s
我正在尝试设置协议(protocol)来处理我的 javascript 函数中的成功和错误,但是当函数成功时它似乎并不合作。我收到以下错误: Failed with: TypeError: Objec
在 typescript 中,我有一个 DataAccess 类,以便所有 Ajax 调用都通过单个对象进行路由,以节省应用程序中许多地方的代码重复。 在使用这种方法时,我需要使用回调将响应返回到调用
我已经用 Spring Security 3.0.2 实现了一个登录-注销系统,一切都很好,但是对于这一点:在我添加了一个带有 invalid-session-url 属性的 session 管理标签
运行命令pip install rpy2会导致以下输出和错误消息:。我按照另一篇Stackoverflow帖子上的说明卸载并重新安装了R和相关目录,但得到了相同的错误。我还尝试安装以前版本的rpy2,
我最近在项目的测试目标中添加了一个新的单元测试,当我点击产品 > 测试时,Xcode 说“测试成功”。我相当确定测试应该失败,因为被测试的方法尚未实现。我在测试中添加了一个断点,但从未到达过;测试仍然
我正在编写一个程序来创建一个AD帐户并启用Exchange邮箱,并且从中得到一些奇怪的行为。 首先,尽管它成功创建了AD用户,但由于“找不到MyPath/先生示例”,因此无法启用邮箱。我认为这是由于A
在cd_deployer_conf文件中我们设置了Cleanup="false,这样传输包在发布后不会被删除,但是我们可以看到单个发布操作有3个不同的包喜欢 tcm_0-264891-66560.CO
我正在使用 $().each() 循环访问一些项目。我想确保这段脚本之后的操作仅在 each() 完成时执行。 示例: $('something').each(function() { // do
我正在尝试创建一个 ping 洪水程序,它将目标 IP 地址和广播 IP 地址作为参数。该程序将向广播地址发送 icmp echo 数据包,并将受害者的 IP 地址作为源。网络上所有收到数据包的主机都
我正在实现一个虚拟 LTE EPC 设置,其模块 (HSS) 之一需要 mysql 数据库。创建后,我必须运行该模块,但收到屏幕截图 1 中所示的错误。附:我对这个东西很陌生 最佳答案 您必须修改您的
#include #include #include #include #include #include #include #include #include void error(cha
我的基本代码如下, fd = open("test.file", O_RDONLY); if (read(fd, &tempch, 1) < 1) { perror("F
更新 :这似乎是在 Pipeline: Declarative 中引入的错误插件版本 1.3.5 - 降级到 1.3.4.1解决了这个问题。票证创建于: https://issues.jenkins-
我最近在 jQuery 网站上看到了弃用通知。 Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
我假设调用 status.success() 会终止后台作业。但是,当我运行它时,我仍然看到第二条日志消息: Parse.Cloud.job("Tester", function (request,
我是一名优秀的程序员,十分优秀!