OAuth 2.0对Google和Google应用程序帐户的身份验证

django-googleauth-ng的Python项目详细描述


简化的oauth+openid连接,通过google进行身份验证。

谷歌过去很简单,但后来谷歌决定放弃他们的openid服务。谷歌。googleauth已经迁移到OAuth 2.0 + OpenID Connect,这并不是很好,因为它需要更多的配置才能运行。

googleauth的构建是为了提供一种简单的方法来添加针对googleappsforbusinessdomain的身份验证,特别是针对单个组织。如果您正在寻找通用的社交身份验证解决方案,则此软件包不是最佳选择。改为签出python-social-auth

在谷歌上设置内容

  1. 登录到Google API Console
  2. 如果需要,打开现有的项目或新建一个项目。
  3. apis&;auth菜单项下,单击apis
  4. 打开google+api。
  5. apis&;auth菜单项下,单击credentials
  6. 单击create new client id按钮。
  7. 选择web application作为应用程序类型,添加您的域作为javascript源,并将完整域和路径添加到oauth回调(有关如何找到此url的信息,请参见下文)。单击create client id按钮完成。
  8. 您将需要django设置中的客户机id和客户机机密值,因此请保持此窗口打开或复制它们以备以后使用。

回调url

回调url是根据您首选的url方案、站点所在的域以及在django中装载googleauth url配置的路径构造的。

假设您使用的是https,并在根url上安装了googleauth url配置。您的回拨URL将类似于:

https://<your-domain>/callback/

好的,现在假设您使用的是http,并且已经在/accounts/下安装了googleauth url配置:

http://<your-domain>/accounts/callback/

django设置

设置和配置

以下设置应放在settings.py中。

添加到已安装的应用程序

INSTALLED_APPS = (
    ...
    'googleauth',
    ...
)

添加到身份验证后端

AUTHENTICATION_BACKENDS = (
    'googleauth.backends.GoogleAuthBackend',
    ...
)

所需设置:

# client ID from the Google Developer Console
GOOGLEAUTH_CLIENT_ID = ''

# client secret from the Google Developer Console
GOOGLEAUTH_CLIENT_SECRET = ''

# your app's domain, used to construct callback URLs
GOOGLEAUTH_CALLBACK_DOMAIN = ''

可选设置:

# callback URL uses HTTPS (your side, not Google), default True
GOOGLEAUTH_USE_HTTPS = True

# restrict to the given Google Apps domain, default None
GOOGLEAUTH_APPS_DOMAIN = ''

# get user's name, default True (extra HTTP request)
GOOGLEAUTH_GET_PROFILE = True

# sets value of user.is_staff for new users, default False
GOOGLEAUTH_IS_STAFF = False

# list of default group names to assign to new users
GOOGLEAUTH_GROUPS = []

url路由

添加URL配置:

urlpatterns = patterns('',
    ...
    (r'^auth/', include('googleauth.urls')),
    ...
)

GoogleAuth不需要安装在/auth/下,它可以到任何地方。把它放在你认为适合你特定应用的地方。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Spring工具套件中找到Spring版本?   是否有API将vSphere JSON结果映射到适当的Java对象?   java在spring WebSocket中有请求作用域吗?(websocket scop==会话范围)   java我想从list1中删除list2元素并返回list1   java使用JPA/Hibernate为单个集合使用多个@Where   JSF2.0中混合Ajax和完整请求的java   java变量miles可能尚未初始化   java使用文件路径StringArray构建父子数组   java数据源在struts中不起作用   java从另一个类访问txtField值   具有相同主键和外键双向关系的java Hibernate实体OneToOne   java Android广播接收器:上下文问题   java我可以将实体指定为数据存储属性以实现类似joinlike的功能吗?   java如何排除hadoop核心依赖项   java是否可以确定用户是否实时单击了任何通知(不仅仅是来自我的应用程序)?   java在单独的类中访问私有变量?   java如何使用Spring@Value注入映射