demo-allauth-bootstrap, Django 示例应用程序,包括通过 Django AllAuth提供社会认证的用户

分享于 

12分钟阅读

GitHub

  繁體 雙語
Demonstration of Django-AllAuth with Twitter Bootstrap
  • 源代码名称:demo-allauth-bootstrap
  • 源代码网址:http://www.github.com/aellerton/demo-allauth-bootstrap
  • demo-allauth-bootstrap源代码文档
  • demo-allauth-bootstrap源代码下载
  • Git URL:
    git://www.github.com/aellerton/demo-allauth-bootstrap.git
    Git Clone代码到本地:
    git clone http://www.github.com/aellerton/demo-allauth-bootstrap
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/aellerton/demo-allauth-bootstrap
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    demo-allauth-bootstrap

    简单,out-of-the-box Django 网站带有访问者( 无登录) 区域和用户( 需要登录) 区域,它的中注册和登录可以通过 Google。

    ;dr

    目标

    帮助建立新站点的任何人都能快速地使用 allauth。

    帮助我提醒一个基本站点是如何连接在一起的;)

    提示

    的总体提示

    修改它。如果你喜欢它,你可以删除一些东西,并将代码作为你自己站点的基础。

    关于Facebook的提示

    • 你需要 Facebook APP ID ( 没有任何客户 ID ) 和秘密。
    • 重复,Facebook APP ID,而不是任何客户机 ID,应该输入为"客户端标识 ID"
    • facebook-developer-settings 区域创建一个应用程序,然后从该区域创建一个测试应用程序。 测试应用程序似乎是唯一能与本地 Django 应用程序一起使用的东西。
    • 阅读莎拉。com的文章,或者查看moe的below。

    Google关于Google的电子邮件提示

    • 你将需要Google开发者控制台中的Google客户标识和密钥。

    预安装

    你需要在这些网站上设置你所需要的设置,如Facebook或者谷歌,你就需要在这些网站上做设置。

    配置Facebook登录

    如果你想使用Facebook作为认证提供者,请遵循以下说明。 跳过其他。

    莎拉在她的文章中很好地描述了这一点。

    除了用户界面更改之外,她描述的方法工作得很好。

    转到 facebook-developer-settings

    添加应用程序

    创建测试应用程序( 在 上面 应用程序下)

    转到设置> 高级

    请不要将任何服务器添加到服务器IP白名单( facebook-whitelist-ip-error ) 中

    添加产品facebook登录"

    如果未自动选择,则启用: 客户端OAuth登录,网络OAuth登录

    添加OAuth重定向 URL ( 按任意顺序): http://127.0.0.1:8000/http://127.0.0.1:8000/accounts/facebook/http://127.0.0.1:8000/accounts/facebook/login/callback/

    注意:如果你使用 localhost:8000 加载站点,你应该使用" http://localhost:8000/。"上面。 无论你选哪个,都要一致,你应该 be。

    注意:"应用机密"和"客户 id"与Facebook有些混淆。
    你想记录"facebook应用程序密钥"和"。APP ID"。 后一个"。APP ID"从 Django Allauth角度成为"客户 ID"。

    配置Google登录

    如果你想使用Google作为认证提供者,请按照以下说明操作。 跳过本节。

    要设置 Google,请遵循基本的Google oauth指令或者 [this help answer] [4]:

    转到 https://console.developers.google.com/

    创建新应用程序

    确保应用程序在左上方选择了( 旁边"google api"logo"

    在"api和服务"下的左侧导航轨道中,单击 credentials"

    创建新的oauth客户机 ID

    你需要指定一些"许可屏幕详细信息"。 你可以跳过大多数字段。

    对于授权的Javascript来源,添加: http://127.0.0.1: 8000个版本

    对于授权重定向 uri,请添加: http://127.0.0.1 :8000/accounts/google/login/callback/

    单击create创建""

    复制"客户 ID"和"客户端密钥"字符串并保存它们- 你很快就会需要它们。

    Reminder提示:如果你在 localhost:8000 加载站点,那么你需要将uri设置为 `` http://localhost:8000/。等等 我建议不要这样做 that。 相反,只需将本地站点加载为 http://127.0.0.1: 8000/

    与其他提供商配置身份验证

    django-allauth库涵盖了 [] 许多其他的providers] allauth提供程序

    首次安装

    确保已经安装 python 3.x。 我使用 python 3.6.

    python 2.7. x 用于工作但 Django 2.0下降支持 python 2. x,,删除对 python 3.4的支持。

    创建 virtualenv 和要求。

    例如:

    
     $ cd demo-allauth-bootstrap
    
    
     $ python3 -m venv mypy # you can call it anything, not just"mypy"
    
    
     $. mypy/bin/activate
    
    
     $ pip install -r requirements.txt
    
    
    
    

    生成初始设置:

    
     $ python configure.py
    
    
    
    

    请按照提示操作这将生成初始 settings.py

    设置初始迁移:

    auth_user 表需要特定的makemigrations:

    
     $ python manage.py makemigrations allauthdemo_auth
    
    
    
    

    生成数据库架构:

    
     $ python manage.py migrate
    
    
    
    

    创建超级用户:

    
     $ python manage.py createsuperuser
    
    
    
    

    提示:请不要输入你要通过 google/facebook连接的电子邮件地址。 在开发中,我使用了" me@admin.test"这样的。

    添加社交提供程序:

    为每个要包括的提供程序运行这里。

    
     $ python manage.py set_auth_provider google GOOGLE_CLIENT_ID GOOGLE_SECRET_ID
    
    
     saved: Google (...)
    
    
    
     $ python manage.py set_auth_provider facebook FACEBOOK_CLIENT_ID FACEBOOK_SECRET_ID
    
    
     saved: Facebook (...)
    
    
    
    

    这实际上运行 SQL:

    
     DELETE FROM socialaccount_socialapp WHERE provider='google';
    
    
     INSERT INTO socialaccount_socialapp (provider, name, secret, client_id, `key`)
    
    
     VALUES ("google","Google","SECRET","CLIENT", '');
    
    
     INSERT INTO socialaccount_socialapp_sites (socialapp_id, site_id) VALUES (
    
    
     (SELECT id FROM socialaccount_socialapp WHERE provider='google'),1);
    
    
    
    

    检查它是否正常工作:

    
     $ python manage.py runserver
    
    
    
    

    http://127.0.0.1 处加载站点:8000

    你应该看到一个着陆页。 单击"加入"或者"登录"。

    登录到管理员并更改默认站点:

    转到 http://127.0.0.1 :8000/admin/sites/site/ - 你可能需要注销,然后作为你在上面创建的超级用户登录。

    在技术上,你不必重命名站点,但是默认的"example.com" 不是很有用。 在开发中,我将域更改为"127.0.0.1",而将 NAME 更改为"( 开发)"。

    当你 getting,你可能会发现你想重新开始。

    如果你使用SQLite作为数据库( 默认值),只需删除该文件并再次启动该序列:

    
    rm db.sqlite3
    
    
    python configure
    
    
    python manage.py makemigrations allauthdemo_auth
    
    
    python manage.py migrate
    
    
    python manage.py set_auth_provider google.. .
    
    
    python manage.py runserver
    
    
    
    

    如果你使用的是Postgres或者类似的,请删除并重新创建数据库。

    注释

    使 repo-成为你

    如果你已经有了网站,并想将它的作为你自己的真实网站的基础,这里是我所做的:

    • 删除所有git历史记录:

      
       rm -rf. git/
      
      
      
      

      然后开始一个新的历史:

      
       git init
      
      
      
      
    • 删除不需要的文件:

      
       rm LICENSE README.md allauthdemo/settings.template.py configure.py
      
      
      
      
    • "allauthdemo" 目录重命名为更合适的内容

    • 可以选择将类 auth.models.User 重命名为更具体的。 你需要重新构建数据库( 我建议你在构建初始应用程序后进行这里操作,并重新命名)。 不要太晚,因为尝试将 User 类迁移到新的NAME 并不能在你获得实际数据时工作得很好。

    • 检查 auth.models.UserProfile 类。草稿包含 date-of-birth ( dob ),你可能希望删除它。

    • 更改设置,使Postgres或者其他完整数据库使用,而不是 sqlite ( 这非常出色,但不适合真正的项目) !

    我是如何构建这个

    最佳资源:

    我首先使用莎拉来了解这些组件是如何一起工作的。 然后克隆 github repo 并使用示例目录,定制它对我有什么意义。 我将它移动到使用 Bootstrap,并添加了一些基本的标准物品,如登陆页和联系人。

    我移动了 Bootstrap 表单以使用bootstrap3库。 至少使处理 Django"邮件"更好的( 尽管看到了我的笔记"粗糙边缘"下方)。 在这里阅读 bootstrap3: http://django-bootstrap3.readthedocs.org/en/latest/

    我为什么要这么做

    在以前,我一直在使用过时的Django 注册模块,并惊喜地发现 django-allauth。 麦克风的教程非常棒,但我想要更充分的使用作为未来工作的基础,并且它可以能帮助别人。

    Credits

    感谢雷蒙德的django-allauth和莎拉的教程。

    粗边缘

    无顺序:

    • 我不喜欢 Django"邮件"的处理。 消息在cookie中累积,它本身很奇怪,只在显示时清除。 我不明白为什么这么做。 我相信有更好的方法处理它;我还没有查看它。

    • profile ( 电子邮件,社交帐户等)的默认allauth呈现是足够的,但是可以做一些工作。


    USE  用户  sam  auth  soc  users  
    相关文章