{ "info": { "author": "jaddison", "author_email": "addi00+github.com@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP" ], "description": "### Overview\n\nThis social authentication Django app is unashamedly built on the shoulders of giants: specifically the excellent [`requests-oauthlib`](https://github.com/requests/requests-oauthlib) and [`requests`](https://github.com/kennethreitz/requests) modules.\n\nSeveral opinionated decisions were made:\n* do one thing: OAuth1/OAuth2 provider authentication\n* avoid complexity by:\n * wrapping existing, trusted, and stable modules\n * letting the developer handle their own `User` model decisions and non-social login/registration\n\n### Installation\n\nStandard `pip` installation.\n\n```\npip install django-simple-socialauth\n```\n\nThis will automatically install `requests-oauthlib` as a requirement (and any modules it requires). Of course, you will need Django itself, obviously.\n\nAdd `simple_socialauth` to `INSTALLED_APPS` in your project's `settings.py`:\n\n```\nINSTALLED_APPS = (\n ...\n \"simple_socialauth\",\n ...\n)\n```\n\nAdd the `simple_socialauth` authentication backend to `AUTHENTICATION_BACKENDS` in your project's `settings.py`:\n\n```\nAUTHENTICATION_BACKENDS = (\n 'django.contrib.auth.backends.ModelBackend',\n 'simple_socialauth.backends.Backend'\n)\n```\n\nAnd finally, add the `simple_socialauth` URL patterns to your project's `urls.py`:\n\n```\n...\nurl_patterns = [\n\t...\n url(r'^oauth/', include('simple_socialauth.urls')),\n\t...\n]\n```\n\nRun migrations:\n\n```\npython manage.py migrate\n```\n\n### Usage\n\nWith most OAuth API providers, you will need to add the callback URL for the given provider into your \"app's\" API settings with that provider. For example [Facebook's developer site](https://developers.facebook.com/) or [Twitter's developer site](https://dev.twitter.com/).\n\nThere are two scenarios for users passing through the `django-simple-socialauth` flow: registering and logging in.\n\n#### User Registration\n\nIf the user doesn't exist in the system, `django-simple-socialauth` will create a new `User` and populate the first, last, email, and username fields with data it retrieves from the social provider's API. If possible, `django-simple-socialauth` will skip the 'completion form' step if all required information was retrieved - otherwise it is shown to the user to collect email and username as needed prior to `User` creation.\n\nIt then creates a [`SocialAccount`](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/models.py) instance representing the social provider's (ie. Facebook, Twitter, etc.) unique ID and access/refresh token data for the user. This `SocialAccount` is obviously associated with the new `User` via a foreign key.\n\nLastly, a `connect` signal is sent. This is an opportunity for the developer to hook into the social user registration process.\n\n#### User Log in\n\nIf the user does exist in the system, `django-simple-socialauth` retrieves the existing `SocialAccount` and associated `User` - and updates the `SocialAccount` with the new access/refresh token data as needed.\n\nA 'login' signal is sent, allowing the developer to hook into the social user login process.\n\n#### After Authentication\n\nThe user's `SocialAccount` instance has a `session` property that sets up an appropriate OAuth1/2 authenticated `requests` session, which lets the developer access the social provider's API using the user's access_token, etc.\n\n```\n# assuming a Facebook SocialAccount object\nr = social_account_obj.session.get('https://graph.facebook.com/me')\nif r.ok:\n user_data = r.json()\n ...\n```\n\n### Configuration\n\n`django-simple-socialauth` is quite configurable. Taking a look inside the module's [`settings`](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/settings.py) we find the following configuration options:\n\n**`SIMPLE_SOCIALAUTH_LOGIN_SUCCESS_REDIRECT_URL`**\n\nThe URL pattern name or absolute URL to redirect to upon success. Defaults to `LOGIN_REDIRECT_URL` if set, else `/`.\n\n**`SIMPLE_SOCIALAUTH_LOGIN_ERROR_REDIRECT_URL`**\n\nThe URL pattern name or absolute URL to redirect to upon error. Defaults to `/`.\n\n**`SIMPLE_SOCIALAUTH_SITEROOT`**\n\nThe domain (eg `www.example.com`) to use when formatting OAuth URLs (ie. callbacks, etc). Defaults to `Site.objects.get_current().domain`.\n\n**`SIMPLE_SOCIALAUTH_SECURE`**\n\nThis setting is only used when `SIMPLE_SOCIALAUTH_SITEROOT` is not set. In that case, `Site.objects.get_current().domain` is used for OAuth callbacks, but to form a proper URL, we need to know if it should be `http` vs `https`. Defaults to `True`.\n\n**`SIMPLE_SOCIALAUTH_GENERATE_USERNAME`**\n\nIf True, when a new Django `User` needs to be created, `django-simple-socialauth` will automatically generate a unique username. Defaults to `False`, which causes the user to see a \"Complete your registration\" page with a form for username and email address.\n\nNote that `django-simple-socialauth` will try to use email and username information from the social provider for these fields first - if they are not available or are already used in the system, the 'completion' form will display.\n\n**`SIMPLE_SOCIALAUTH_PROVIDERS`**\n\nThis setting indicates which social provider modules are enabled. Defaults to `()` (ie. no providers enabled). This setting works together with `SIMPLE_SOCIALAUTH_PROVIDERS_SETTINGS`, meaning you will need to add corresponding settings there. Enabling providers is simple - in your Django project `settings.py`, to enable both Facebook and Twitter, just add:\n\n```\nSIMPLE_SOCIALAUTH_PROVIDERS = (\n\t'simple_socialauth.providers.facebook.FacebookProvider',\n\t'simple_socialauth.providers.twitter.TwitterProvider'\n)\n```\n\nNote that this method of enabling providers allows the developer to [create custom social providers](#custom-providers).\n\nSee below for a [list of included social providers](#provider-list).\n\n**`SIMPLE_SOCIALAUTH_PROVIDERS_SETTINGS`**\n\nAll social providers require an API `id` (sometimes called a `key`) and `secret`. Assuming Facebook (OAuth2) and Twitter (OAuth1) providers are enabled, this is how their settings would be configured:\n\n```\nSIMPLE_SOCIALAUTH_PROVIDERS_SETTINGS = {\n 'twitter': {\n 'init_params': {\n 'client_key': 'twitter-key',\n 'client_secret': 'twitter-secret'\n },\n 'authorize_params': {},\n 'callback_params': {}\n },\n 'facebook': {\n 'init_params': {\n 'client_id': 'facebook-client_id',\n # 'scope': ['email', 'public_profile', 'user_friends']\n\n },\n 'authorize_params': {},\n 'callback_params': {\n 'client_secret': 'facebook-client_secret'\n }\n }\n}\n```\n\nNotice that authorization `scope` can also be set in each provider's `init_params`. The details of each provider's `scope` options is out of the scope of this documentation - and is subject to change.\n\nAll OAuth2-based providers will follow the format show by the Facebook example above. OAuth1-based providers will follow the example shown by Twitter above.\n\n\n### Notes\n\n#### OAuth Scope Advice\n\nWhen selecting which OAuth `scopes` for your enabled providers in `SIMPLE_SOCIALAUTH_PROVIDERS_SETTINGS`, consider adding the scopes that get you both the username and email address for the authenticating user. This will allow the user to skip the cumbersome 'completion form' step that asks them to fill those fields in.\n\n#### Included Social Providers \n\nAll are OAuth2 unless indicated:\n\n* `facebook`: `simple_socialauth.providers.facebook.FacebookProvider`\n* `twitter`: `simple_socialauth.providers.twitter.TwitterProvider` (**OAuth1**)\n* `github`: `simple_socialauth.providers.github.GithubProvider`\n* `pinterest`: `simple_socialauth.providers.pinterest.PinterestProvider`\n* `google`: `simple_socialauth.providers.google.GoogleProvider`\n* `linkedin`: `simple_socialauth.providers.linkedin.LinkedinProvider`\n* `angellist`: `simple_socialauth.providers.angellist.AngellistProvider`\n\n\n#### Creating Custom Providers \n\nIf the social provider you want to add is OAuth1 or OAuth2 based, then `requests-oauthlib` almost certainly supports it. There are some that aren't fully OAuth1/2 compliant, and thus `requests-oauthlib` has a number of [compliance fixes](https://github.com/requests/requests-oauthlib/tree/master/requests_oauthlib/compliance_fixes). This project uses the [Facebook](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/providers/facebook.py) and [LinkedIn](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/providers/linkedin.py) fixes, for example.\n\nCreating a custom provider is quite simple - let's take a look at the [Github provider](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/providers/github.py) to see what's involved:\n\n```\nfrom .base import BaseProvider\n\n\nclass GithubProvider(BaseProvider):\n type = 'github'\n\n def __init__(self, **kwargs):\n self.authorization_url = 'https://github.com/login/oauth/authorize'\n self.access_token_url = 'https://github.com/login/oauth/access_token'\n self.user_api_url = 'https://api.github.com/user'\n super(GithubProvider, self).__init__(**kwargs)\n\n def get_social_user_info(self):\n data = super(GithubProvider, self).get_social_user_info()\n if data:\n uid = data.get('id')\n name = data.get('name', '')\n name_split = name.split(' ', 1)\n return {\n 'source_data': data,\n 'uid': uid,\n 'username': data.get('login', ''),\n 'email': data.get('email', ''),\n 'company': data.get('company', ''),\n 'organizations_url': data.get('organizations_url', ''),\n 'repositories_url': data.get('repos_url', ''),\n 'name': name,\n 'first_name': name_split[0],\n 'last_name': name_split[1] if len(name_split) > 1 else ''\n }\n return {}\n```\n\nEach provider must inherit from `BaseProvider` and requires a unique `type` value.\n\nFor display purposes, a `name` value can be optionally set, but will fall back on `type`. This is useful for providers whose names aren't easily title-cased, such as \"LinkedIn\" (note the capital 'I').\n\nThe appropriate OAuth1/2 URLs must be set:\n\n* `authorization_url` (OAuth1/2)\n* `access_token_url` (OAuth1/2)\n* `request_token_url` (OAuth1 only - see the [Twitter provider](https://github.com/jaddison/django-simple-socialauth/blob/master/simple_socialauth/providers/twitter.py))\n* `user_api_url` (OAuth1/2)\n\nAny compliance fixes ought to be done at the end of the provider's `__init__`.\n\nUpon successful user authentication via a provider, `django-simple-socialauth` calls the provider's `get_social_user_info()` method, which retrieves key user-specific information from the social provider's authenticated API. This method should return the following information (if available) in a `dict`:\n\n* `uid` the social provider's unique ID for the user in their system (required!)\n* `username`\n* `email`\n* `first_name`\n* `last_name`\n\nThis information is used to create the Django `User`.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jaddison/django-simple-socialauth", "keywords": "django social authentication oauth register login auth", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-simple-socialauth", "package_url": "https://pypi.org/project/django-simple-socialauth/", "platform": "", "project_url": "https://pypi.org/project/django-simple-socialauth/", "project_urls": { "Homepage": "https://github.com/jaddison/django-simple-socialauth" }, "release_url": "https://pypi.org/project/django-simple-socialauth/2.0.0/", "requires_dist": [ "requests-oauthlib" ], "requires_python": "", "summary": "Django social account authentication app based on requests-oauthlib.", "version": "2.0.0" }, "last_serial": 4491171, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "7087fc8959dfbf01c5b5932ad0c48a7e", "sha256": "3eaf4120163571209a487c0710693219ba0aeeb43896b290536ddeb5aeae8d9d" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7087fc8959dfbf01c5b5932ad0c48a7e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18404, "upload_time": "2017-03-07T00:24:02", "url": "https://files.pythonhosted.org/packages/8b/43/06d6d8e585f4e2e75a77f2bfbeadc677340fb8af7edeac7a827da8dd1904/django_simple_socialauth-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7307bd0ff38ca3cd75f9d55e9b6a3bc6", "sha256": "a45199caae47e953ccad66fd05aa8f1b196f586203c654753d838058f124fec2" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.0.tar.gz", "has_sig": false, "md5_digest": "7307bd0ff38ca3cd75f9d55e9b6a3bc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10284, "upload_time": "2017-03-07T00:24:06", "url": "https://files.pythonhosted.org/packages/c8/12/fc5140cb1a16e9f55c2844be3686d3c289ac120ce4e7a65609c9906c343b/django-simple-socialauth-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "4c6988378d990e36fef85b914862bbd2", "sha256": "09210bf16c60d7280d4660d883f92a8ca46c02637a7ac32f82fb8e5c7dfb7162" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c6988378d990e36fef85b914862bbd2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18362, "upload_time": "2017-03-07T01:02:33", "url": "https://files.pythonhosted.org/packages/c8/a1/11901d29683823496f239a984fe2894cbfbd68512ccc125b29691683e21e/django_simple_socialauth-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "667cb18297ad289c3f0c7f2a7875a1da", "sha256": "1804a019082f0b6b0f7f30a26dcc7b4057a115e3ae738b5484a58af3452ef15e" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.1.tar.gz", "has_sig": false, "md5_digest": "667cb18297ad289c3f0c7f2a7875a1da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10243, "upload_time": "2017-03-07T01:02:35", "url": "https://files.pythonhosted.org/packages/e3/d7/b7548bab9c01ef89917eecb18e4834c933faa85fd92c7367ca8880780ac1/django-simple-socialauth-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "e1fbf2da1f8fbf72693c67c4a7e7f353", "sha256": "482328f9fea525ad77d071a43d760302340cdff176bf2a3ea8450c16412acf4c" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e1fbf2da1f8fbf72693c67c4a7e7f353", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25907, "upload_time": "2017-03-07T19:45:57", "url": "https://files.pythonhosted.org/packages/10/99/0f176a844ec66ff4126db5cf855e24b4507c1fadf428103707cb8742dd61/django_simple_socialauth-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "081a2c107a7eefe260ab301352b6fee4", "sha256": "7fc28684783d71e11f907f344afb54fd73fc0725ca25c252a0838c3229e30090" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.2.tar.gz", "has_sig": false, "md5_digest": "081a2c107a7eefe260ab301352b6fee4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13762, "upload_time": "2017-03-07T19:45:58", "url": "https://files.pythonhosted.org/packages/b0/01/0eefbd79db9457f80414d96ad3faa0caa6f69b7b8417b151ad31102107fb/django-simple-socialauth-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "75945122638e641e085f977bb16f0c5b", "sha256": "42376f7799d08b5e37ca9a20bac88c936c9276bfb46474b6b46eaf5913337926" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "75945122638e641e085f977bb16f0c5b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25903, "upload_time": "2017-03-09T01:59:53", "url": "https://files.pythonhosted.org/packages/e8/ab/33979ceec969e5010e4535d7244d5c93651b8888d504dbaf218ee70ad1bf/django_simple_socialauth-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8d652ba708d8f9ff0b3e76e81dd122b", "sha256": "c2fa5cf0205b7518f8913eceba1eccd1cdb16b146d8e5d8daca36591a00a10e6" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.3.tar.gz", "has_sig": false, "md5_digest": "c8d652ba708d8f9ff0b3e76e81dd122b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14347, "upload_time": "2017-03-09T01:59:54", "url": "https://files.pythonhosted.org/packages/7e/61/809b97d03eefd63e9ac092986410beae8b698834154c866a6930e3c36d26/django-simple-socialauth-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "5f97085df1d85dbec2229ce7715a9f0d", "sha256": "745307e399dd3d8978005b14c2847b56983dcf203566389e0c25b6464d3f2a60" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5f97085df1d85dbec2229ce7715a9f0d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25919, "upload_time": "2017-03-09T17:56:58", "url": "https://files.pythonhosted.org/packages/4e/9f/82650f14616ef896c6b8875ef606e26151c04e1e30363ac01317f51ebb9a/django_simple_socialauth-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f07c314ae4279a4cd2200c9536c03bf8", "sha256": "2e3481091ae64048ded06b70fba28cebc3ce7ee152e6f542d0878d74bfa55d8c" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.4.tar.gz", "has_sig": false, "md5_digest": "f07c314ae4279a4cd2200c9536c03bf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14356, "upload_time": "2017-03-09T17:56:59", "url": "https://files.pythonhosted.org/packages/48/df/7d99372115cd7d6edd1aae3ac869a6c3a8e26f8364314fbe0f439b99428b/django-simple-socialauth-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "11fe4de45bbc72cf539cbd0f1b75c42c", "sha256": "d688ca6a2c930d3d9463b051e4d71379a25ffd93e783eec8db5b30e3f5f18547" }, "downloads": -1, "filename": "django_simple_socialauth-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11fe4de45bbc72cf539cbd0f1b75c42c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26454, "upload_time": "2017-03-09T18:41:25", "url": "https://files.pythonhosted.org/packages/4d/5f/e8afb6cae31d30277bc6493efa0496f04761c4c6de4f531814d1c4345905/django_simple_socialauth-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "523ce07825f50cea13afd0a7dcfd5b76", "sha256": "64c9114258e2aab5d59643000765e4284af78b0f77e118463d0021a1390e667d" }, "downloads": -1, "filename": "django-simple-socialauth-1.0.5.tar.gz", "has_sig": false, "md5_digest": "523ce07825f50cea13afd0a7dcfd5b76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14456, "upload_time": "2017-03-09T18:41:27", "url": "https://files.pythonhosted.org/packages/d7/8b/81ea9439355e4a269bf31b788cbc7eb4d003abb88851defd6d599329bf73/django-simple-socialauth-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5b225a0c2e93f6c6f7b6e2eeda3f2ddf", "sha256": "4274183b0e6fed4d2b14e0d8be19f2cd019be11abbb0a443c17dd7b903dd70c9" }, "downloads": -1, "filename": "django_simple_socialauth-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b225a0c2e93f6c6f7b6e2eeda3f2ddf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 26829, "upload_time": "2017-03-27T20:38:02", "url": "https://files.pythonhosted.org/packages/d2/a0/ffd2d8d053bc091745dbc262f594a382934d586f54805cf22b49d2c1a93f/django_simple_socialauth-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd090847b3f2e1910fee816f3aa64d50", "sha256": "73f450ad22d7821a552e173e82d678d2e4434a63dd6a7fedeac2286dc7be9561" }, "downloads": -1, "filename": "django-simple-socialauth-1.1.0.tar.gz", "has_sig": false, "md5_digest": "cd090847b3f2e1910fee816f3aa64d50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15465, "upload_time": "2017-03-27T20:38:04", "url": "https://files.pythonhosted.org/packages/a7/9f/804b60abc653f845b233f2932ad808a656e7a8027f22e3cd749b3ab365f0/django-simple-socialauth-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "4401bd7b90c1227bda20f0808c283db0", "sha256": "0e5665a533e08bb406f04b32c68242edd8f3b892872c9baf2172c1d8b838627a" }, "downloads": -1, "filename": "django_simple_socialauth-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4401bd7b90c1227bda20f0808c283db0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21440, "upload_time": "2018-07-17T21:30:35", "url": "https://files.pythonhosted.org/packages/3d/3c/4a06da07e8a98e8876db5e7e5d8b3c10519dde809ddcf4caa750c242d26f/django_simple_socialauth-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2de01997b6aed365b149af412f63494", "sha256": "4e8fd9b133e6cd65418202b7c7b74e2a548e17a187fdec86a864f6cba9dd93e8" }, "downloads": -1, "filename": "django-simple-socialauth-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b2de01997b6aed365b149af412f63494", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18268, "upload_time": "2018-07-17T21:30:36", "url": "https://files.pythonhosted.org/packages/80/85/bf845a8d1fc09eff838bed65432adc18b59a71350fb741d9a82e0f30c7a9/django-simple-socialauth-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "d73eea54be2bc7ac9e5b1ab07206b2b7", "sha256": "ae3b06f8c4bfef86e5d4305d02055a3eb6b098fe3fc896ffa484e86feb028e10" }, "downloads": -1, "filename": "django_simple_socialauth-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d73eea54be2bc7ac9e5b1ab07206b2b7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22328, "upload_time": "2018-11-08T06:28:07", "url": "https://files.pythonhosted.org/packages/5f/bd/33f13c1cedb06f91e1292a0768ec8618ad0a26ad765abf5c8069bcb23dbd/django_simple_socialauth-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "601b21348ecae7725aaac916b1816349", "sha256": "b8c59129637006220597a5b239cb6682beeda1f3e54e9d878dcc367799992f66" }, "downloads": -1, "filename": "django-simple-socialauth-1.2.1.tar.gz", "has_sig": false, "md5_digest": "601b21348ecae7725aaac916b1816349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18284, "upload_time": "2018-11-08T06:28:09", "url": "https://files.pythonhosted.org/packages/1e/2e/9b3d3580ab5859691e3cea5e1509cdc99eebe3f3ac0c6b8c1af22ffc84cc/django-simple-socialauth-1.2.1.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "2a62856a8b770b4162edca7e4dc9b91c", "sha256": "3daae064922c8a7ea52e561f64b6be0e91406be43882e2b57e61f96f63d9d4ce" }, "downloads": -1, "filename": "django_simple_socialauth-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a62856a8b770b4162edca7e4dc9b91c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22328, "upload_time": "2018-11-15T20:43:49", "url": "https://files.pythonhosted.org/packages/bf/82/f0b7898664379d2bfd5f3f5c8dec415e4a59d9a13b46f7028bc27ab5d917/django_simple_socialauth-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f1c88ea47b4c0a337f98e4180286bc0", "sha256": "7c8912e9178998d03597557d4c2cd6ac4ac0bba67d6c858db945515f6e077817" }, "downloads": -1, "filename": "django-simple-socialauth-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1f1c88ea47b4c0a337f98e4180286bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18283, "upload_time": "2018-11-15T20:43:51", "url": "https://files.pythonhosted.org/packages/e1/1d/ba22f677442363e4807db47c2746258aa9da01129ea72cc5915d47887285/django-simple-socialauth-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2a62856a8b770b4162edca7e4dc9b91c", "sha256": "3daae064922c8a7ea52e561f64b6be0e91406be43882e2b57e61f96f63d9d4ce" }, "downloads": -1, "filename": "django_simple_socialauth-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a62856a8b770b4162edca7e4dc9b91c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22328, "upload_time": "2018-11-15T20:43:49", "url": "https://files.pythonhosted.org/packages/bf/82/f0b7898664379d2bfd5f3f5c8dec415e4a59d9a13b46f7028bc27ab5d917/django_simple_socialauth-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f1c88ea47b4c0a337f98e4180286bc0", "sha256": "7c8912e9178998d03597557d4c2cd6ac4ac0bba67d6c858db945515f6e077817" }, "downloads": -1, "filename": "django-simple-socialauth-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1f1c88ea47b4c0a337f98e4180286bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18283, "upload_time": "2018-11-15T20:43:51", "url": "https://files.pythonhosted.org/packages/e1/1d/ba22f677442363e4807db47c2746258aa9da01129ea72cc5915d47887285/django-simple-socialauth-2.0.0.tar.gz" } ] }