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

django-googleauth的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 log4j找不到log4jtest。房产?   我在java线程“awteventque1”中获得异常。lang.NullPointerException   java为什么在使用完整路径从文件系统读取文件时出错?   java如何迭代所有注册表项?   java中的安卓 Opencv SVM未正确训练   多线程Java ThreadPoolExecutor关闭特定线程?   如何使用Java NIO CreateDirectory方法设置目录所有者组?   java NatTable混合了固定宽度的列和可调整大小的填充剩余空间   java如何删除特定网络,即使该网络是由安卓上的其他设备创建的?   java Guava toJavaUtil()不存在   java对许多常量使用枚举是有效的memorywise?   java是否可以使用坐标定位JButton?   从WSDL生成java代码导致异常   java如何在安卓中导出javadoc   爬行JAX中的java NoClassDefFoundError错误   java为片段中的文本视图设置区域设置   发送最后一条消息后发生Java RMI RemoteException