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如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?   控制台Java:不使用新行更新命令行中的文本   java servlet接收xml数据时,出现错误   使用REST API在Bitbucket中复制或复制存储库   java如何在JavaFX中对齐一行?   java如何在活动中显示通过服务获得的数据?   返回BigDecimal作为字符串:返回int   java组织。openqa。硒。InvalidSelectorException:尝试查找元素时选择器无效   java仅在阻塞状态下通知和通知所有影响线程   java JBOSS无法启动部署   java方法的返回值能保证类型安全吗?   JavaeShadoop序列化组织。阿帕奇。hadoop。木卫一。短写失败   java如果我在同一个类上同步了两个方法,它们能同时运行吗?   不使用java数据库的spring分页实现   java如何将字符串切碎成这样的数组?