{ "info": { "author": "Philip Garnero", "author_email": "philip.garnero@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Django rest-framework Social Oauth2\n===================================\n\n.. image:: https://badge.fury.io/py/django-rest-framework-social-oauth2.svg\n :target: http://badge.fury.io/py/django-rest-framework-social-oauth2\n\nThis module provides a python-social-auth and oauth2 support for django-rest-framework.\n\nThe first aim of this package is to help setting up social auth for your rest api. It also helps setting up your Oauth2 provider.\n\nThis package is relying on `python-social-auth `_ and `django-oauth-toolkit `_.\nYou should probably read their docs if you were to go further than what is done here.\nIf you have some hard time understanding Oauth2 you can read a simple explanation `here `_.\n\n\nInstallation\n------------\n\nInstall with pip::\n\n pip install django-rest-framework-social-oauth2\n\n\nAdd these apps to your `INSTALLED_APPS`\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'oauth2_provider',\n 'social_django',\n 'rest_framework_social_oauth2',\n )\n\n\nInclude auth urls to your urls.py\n\n.. code-block:: python\n\n urlpatterns = patterns(\n ...\n (r'^auth/', include('rest_framework_social_oauth2.urls')),\n )\n\n\nAdd these context processors to your `TEMPLATE_CONTEXT_PROCESSORS`\n\n.. code-block:: python\n\n TEMPLATE_CONTEXT_PROCESSORS = (\n ...\n 'social_django.context_processors.backends',\n 'social_django.context_processors.login_redirect',\n )\n\nSince Django version 1.8, the TEMPLATE_CONTEXT_PROCESSORS is deprecated, set the 'context_processors' option in the OPTIONS of a DjangoTemplates backend instead.\n\n.. code-block:: python\n\n TEMPLATES = [\n {\n ...\n 'OPTIONS': {\n 'context_processors': [\n ...\n 'social_django.context_processors.backends',\n 'social_django.context_processors.login_redirect',\n ],\n },\n }\n ]\n\nYou can then enable the authentication classes for django rest framework by default or per view (add or update the `REST_FRAMEWORK` and `AUTHENTICATION_BACKENDS` entries to your settings.py)\n\n.. code-block:: python\n\n REST_FRAMEWORK = {\n ...\n 'DEFAULT_AUTHENTICATION_CLASSES': (\n ...\n 'oauth2_provider.contrib.rest_framework.OAuth2Authentication',\n 'rest_framework_social_oauth2.authentication.SocialAuthentication',\n ),\n }\n\n.. code-block:: python\n\n AUTHENTICATION_BACKENDS = (\n ...\n 'rest_framework_social_oauth2.backends.DjangoOAuth2',\n 'django.contrib.auth.backends.ModelBackend',\n )\n\nThe settings of this app are:\n - DRFSO2_PROPRIETARY_BACKEND_NAME sets the name of your Oauth2 social backend (e.g Facebook), defaults to \"Django\"\n - DRFSO2_URL_NAMESPACE sets the namespace for reversing urls.\n\n\nNow go to django admin and add a new Application.\n - client_id and client_secret shouldn't be changed\n - user should be your superuser\n - redirect_uris should be left blank\n - client_type should be set to confidential\n - authorization_grant_type should be set to 'Resource owner password-based'\n - name can be set to whatever you want\n\n\nThe installation is done, you can now test the app.\n\nRemember that you need to read the docs from `python-social-auth` and `django-oauth-toolkit` if you want to go further.\nIf you want to enable a social backend (like facebook), check the docs of `python-social-auth` about `supported backends `_ or `django-social-auth` about `bakends system `_.\n\n\nTesting the setup\n-----------------\n\n- Now that the installation is done, let's try it ! Ask a token for an user using curl :\n\n curl -X POST -d \"client_id=&client_secret=&grant_type=password&username=&password=\" http://localhost:8000/auth/token\n\n`` and `` are the keys generated automatically that you can find in the model Application you created.\n\n- Now let's imagine you need to refresh your token :\n\n curl -X POST -d \"grant_type=refresh_token&client_id=&client_secret=&refresh_token=\" http://localhost:8000/auth/token\n\n- Now let's try something else ! Let's exchange an external token for a token linked to your app :\n\n curl -X POST -d \"grant_type=convert_token&client_id=&client_secret=&backend=&token=\" http://localhost:8000/auth/convert-token\n\n`` here needs to be replaced by the name of an enabled backend (facebook for example if that's the case). Note that PROPRIETARY_BACKEND_NAME is a valid backend name but there is no use to do that here.\n`` is for the token you got from the service utilizing an iOS app for example.\n\n- Finally, let's try revoking tokens :\n\n - Revoke a single token :\n\n curl -X POST -d \"client_id=&client_secret=&token=\" http://localhost:8000/auth/revoke-token\n\n - Revoke all tokens for an user :\n\n curl -H \"Authorization: Bearer \" -X POST -d \"client_id=\" http://localhost:8000/auth/invalidate-sessions\n\n\nIf you have any questions feel free to ask me.\n\n\nSocial Authentication\n---------------------\n\nAs you probably noticed, we enabled a default authentication backend called SocialAuthentication.\nThis backend lets you register and authenticate your users seamlessly on your api.\n\nThe class simply gets the backend name and token from the Authorization header and try to authenticate the user using the right external provider.\n\nIf the user was not registered on your app, it will create a new user to be used.\n\nExample request :\n\n curl -H \"Authorization: Bearer \" http://localhost:8000/route/to/your/view\n\n\nFacebook Example\n----------------\n\nTo use Facebook as the authorization backend of your django-rest-framework api, your settings.py file should look like this:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n # OAuth\n 'oauth2_provider',\n 'social_django',\n 'rest_framework_social_oauth2',\n )\n\n TEMPLATES = [\n {\n ...\n 'OPTIONS': {\n 'context_processors': [\n ...\n # OAuth\n 'social_django.context_processors.backends',\n 'social_django.context_processors.login_redirect',\n ],\n },\n }\n ]\n\n REST_FRAMEWORK = {\n ...\n 'DEFAULT_AUTHENTICATION_CLASSES': (\n ...\n # OAuth\n 'oauth2_provider.contrib.rest_framework.OAuth2Authentication',\n 'rest_framework_social_oauth2.authentication.SocialAuthentication',\n )\n }\n\n AUTHENTICATION_BACKENDS = (\n\n # Others auth providers (e.g. Google, OpenId, etc)\n ...\n\n # Facebook OAuth2\n 'social_core.backends.facebook.FacebookAppOAuth2',\n 'social_core.backends.facebook.FacebookOAuth2',\n\n # django-rest-framework-social-oauth2\n 'rest_framework_social_oauth2.backends.DjangoOAuth2',\n\n # Django\n 'django.contrib.auth.backends.ModelBackend',\n\n )\n\n # Facebook configuration\n SOCIAL_AUTH_FACEBOOK_KEY = ''\n SOCIAL_AUTH_FACEBOOK_SECRET = ''\n\n # Define SOCIAL_AUTH_FACEBOOK_SCOPE to get extra permissions from facebook. Email is not sent by default, to get it, you must request the email permission:\n SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']\n SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {\n 'fields': 'id, name, email'\n }\n\n\n- You can test these settings by running the following command :\n\n curl -X POST -d \"grant_type=convert_token&client_id=&client_secret=&backend=facebook&token=\" http://localhost:8000/auth/convert-token\n\nThis request returns the \"access_token\" that you should use on all HTTP requests with DRF. What is happening here is that we are converting a third-party access token () in an access token to use with your api and its clients (\"access_token\"). You should use this token on each and further communications between your system/application and your api to authenticate each request and avoid authenticating with FB every time.\n\nYou can find the id and secret of your app at https://developers.facebook.com/apps/.\n\nFor testing purposes you can use the access token `` from https://developers.facebook.com/tools/accesstoken/.\n\nFor more information on how to configure python-social-auth with Facebook visit http://python-social-auth.readthedocs.io/en/latest/backends/facebook.html.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PhilipGarnero/django-rest-framework-social-oauth2", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-rest-framework-social-oauth2", "package_url": "https://pypi.org/project/django-rest-framework-social-oauth2/", "platform": "", "project_url": "https://pypi.org/project/django-rest-framework-social-oauth2/", "project_urls": { "Homepage": "https://github.com/PhilipGarnero/django-rest-framework-social-oauth2" }, "release_url": "https://pypi.org/project/django-rest-framework-social-oauth2/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "python-social-auth and oauth2 support for django-rest-framework", "version": "1.1.0" }, "last_serial": 3521332, "releases": { "0.0.1": [ { "comment_text": "built for Linux-3.13.0-45-generic-x86_64-with-glibc2.7", "digests": { "md5": "2676fbd28ee2d91ae9837830f44613ec", "sha256": "ce0ef024f9e97d851c48a185d17781530c6c94f15d33306a384a605c86833b02" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "2676fbd28ee2d91ae9837830f44613ec", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 7285, "upload_time": "2015-03-04T03:27:19", "url": "https://files.pythonhosted.org/packages/ee/c7/1b330c23c8c09e71d35575621538a88d0f94e53d44a85e0574d281160542/django-rest-framework-social-oauth2-0.0.1.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "2270007244336e7d2f7ce03edcd9f4a6", "sha256": "11937371c208bd64ae8f548d9969db95c6af75d0f0e11c07f4ad40c6a6ea6055" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.1.tar.gz", "has_sig": false, "md5_digest": "2270007244336e7d2f7ce03edcd9f4a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5117, "upload_time": "2015-03-04T03:32:07", "url": "https://files.pythonhosted.org/packages/4e/48/0f4f1317be5ee2bf00f00a135e511f81727f533bf21a594c83031a8e49ff/django-rest-framework-social-oauth2-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "7db23a64103c33ccc01d8e773774151e", "sha256": "5437ecfeed03e48ca8e88c343de2bb9e1caef7bf08ebba239b8e5d6aca021394" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.2.tar.gz", "has_sig": false, "md5_digest": "7db23a64103c33ccc01d8e773774151e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5232, "upload_time": "2015-03-27T03:02:18", "url": "https://files.pythonhosted.org/packages/f8/38/ff45939123f021f64acad67cf8fe465f8e26b3014d8142c39e9ea96b00de/django-rest-framework-social-oauth2-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "2e13d17354d5ec966eae0ed802bab500", "sha256": "ec7eee7e1e4a329f8a740bb3589b74d2c9b089f945e62393c6f23aa077649493" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.3.tar.gz", "has_sig": false, "md5_digest": "2e13d17354d5ec966eae0ed802bab500", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6295, "upload_time": "2015-04-08T17:36:59", "url": "https://files.pythonhosted.org/packages/cb/8e/6e9d33b41fc9e634bf6ffec22f9a795933ef28ec27a12878f87724dc1dd3/django-rest-framework-social-oauth2-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "41aac254541be33f05799207c1e2f70f", "sha256": "82fb0dbe51d2abd98105575f2bdcd7578dfcbb2908a15f2b2f126296ca2df153" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.4.tar.gz", "has_sig": false, "md5_digest": "41aac254541be33f05799207c1e2f70f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6347, "upload_time": "2015-04-15T20:14:08", "url": "https://files.pythonhosted.org/packages/cb/a6/9a6b672ff5fb098341d04ca16cd71b1c27c566b2276a41be5971530bdb48/django-rest-framework-social-oauth2-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2330ad07f9f14dc749edaa99f1e2639c", "sha256": "66a64a535c90ed87be90a21c637df10da88db9621ecd6fcadbf94b28536beb2f" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.5.tar.gz", "has_sig": false, "md5_digest": "2330ad07f9f14dc749edaa99f1e2639c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5926, "upload_time": "2015-05-13T09:16:28", "url": "https://files.pythonhosted.org/packages/95/05/20a20dfc782f08f70a9fb57b5046aa66dfb94d4334c1562d64f37668a156/django-rest-framework-social-oauth2-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "632553c449b0b8a65e1a037870c3af7c", "sha256": "1c63b079280576cf5947f58a7baf73ed0079cf0fc6027a5234d201ca1b97c038" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.6.tar.gz", "has_sig": false, "md5_digest": "632553c449b0b8a65e1a037870c3af7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6417, "upload_time": "2015-05-13T10:04:35", "url": "https://files.pythonhosted.org/packages/a0/a3/63a5a6ab61dd5d5cc7ee4ca13fbcd39e5f71df96f45931a138008d93a2a3/django-rest-framework-social-oauth2-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "bad7d92919dfc25b5dc616e93ec53796", "sha256": "51a338f109ddcc06c7ac9987d132eac6a1399805a0484ceb6382ffd35c046896" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.7.tar.gz", "has_sig": false, "md5_digest": "bad7d92919dfc25b5dc616e93ec53796", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7048, "upload_time": "2015-06-06T00:52:55", "url": "https://files.pythonhosted.org/packages/dc/0a/4e0e05cf9043a75c44c9a0025ea9f15bfd65fa7d9dbb0bbaf69f6266dd8b/django-rest-framework-social-oauth2-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "1cb12bb1ab9f2a39cafad2ddda95d561", "sha256": "d2d3001ddf726bba14173d3a4f61a8fd444ec05ca6c294fdfef3c039e63cdfdb" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1cb12bb1ab9f2a39cafad2ddda95d561", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7108, "upload_time": "2015-06-07T18:50:35", "url": "https://files.pythonhosted.org/packages/cf/6a/3b99ba180cf99f63abdf1f195f706b19c242079973e1844e333ce73d1c7e/django-rest-framework-social-oauth2-0.0.8.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ac2d38f9467e8b562a24abf5efaba7db", "sha256": "d49238ec38782afa0fffeee77fd16e45632bff05835faa82dbb547a2d937e362" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ac2d38f9467e8b562a24abf5efaba7db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11517, "upload_time": "2015-07-30T11:53:10", "url": "https://files.pythonhosted.org/packages/1d/3d/9a1450b1b064a705d0d2712f3494660f0b23a91126fb4fed43709aea8916/django-rest-framework-social-oauth2-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2622742b272227f2da5eeed2ddaae13f", "sha256": "8ecdb769dd5cd348146b7a0ad2a74f8b1c55251dc8c96b3f7d5b2e000ea16e06" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.1.tar.gz", "has_sig": false, "md5_digest": "2622742b272227f2da5eeed2ddaae13f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11442, "upload_time": "2015-08-09T12:00:56", "url": "https://files.pythonhosted.org/packages/02/31/47185aabc79e04d59de37ba5244251436eb9c8964fbefc9e8a00a85e1359/django-rest-framework-social-oauth2-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "0b9ac869d97567985f393aa62a1f181d", "sha256": "e0ca1d85a6f85537162f2eacaa2e40997913cafaddd9a4c4269ea3afafb0fc19" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.2.tar.gz", "has_sig": false, "md5_digest": "0b9ac869d97567985f393aa62a1f181d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11900, "upload_time": "2015-08-12T07:14:03", "url": "https://files.pythonhosted.org/packages/d6/07/c8f281c19aa79cfc4aefda84215fe4d8c1e7e90e30624d42b71d4d6baa6a/django-rest-framework-social-oauth2-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3a741f774eb7be8b686463a9f333d181", "sha256": "4a455fc11cdd7a63497585679403aca1329f2eb8df104b6dcc3f947c8ee11605" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3a741f774eb7be8b686463a9f333d181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12011, "upload_time": "2016-02-17T06:01:33", "url": "https://files.pythonhosted.org/packages/91/3c/5ae41e8b4567501d555673ec63b1af0e7ba1b8426eb2fff09b17e215c54f/django-rest-framework-social-oauth2-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "53e2b618e4dbc18da64bbd1022b7d003", "sha256": "312217e0fc8b5e419e0ca9f76e9946ac4922b6325c75b80b36507ef2fbf15eed" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.4.tar.gz", "has_sig": false, "md5_digest": "53e2b618e4dbc18da64bbd1022b7d003", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11483, "upload_time": "2016-02-25T23:53:08", "url": "https://files.pythonhosted.org/packages/f7/9c/6ea8820970c2848137b38803be9757e433152f44dac9ecaa0b33f79e989d/django-rest-framework-social-oauth2-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "ec91299cd0f5d2c6cec5d2e0832d1ba6", "sha256": "d1efc9dd9beaae130ac66c61f66925bf0d1996db11c18affac5ec8a0988634f7" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.5.tar.gz", "has_sig": false, "md5_digest": "ec91299cd0f5d2c6cec5d2e0832d1ba6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10265, "upload_time": "2017-01-03T02:11:00", "url": "https://files.pythonhosted.org/packages/0e/a2/f071bd1f722788b824e4753cf3d41037cc705dd3b2f1237cb67e1911d4fc/django-rest-framework-social-oauth2-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "ef15cd68b48e9d8bcafebe8f0616866c", "sha256": "cc6ceaaedf8c4d9a64dc6de39105c280366a712772319a83ad69e371cd5f3635" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.6.tar.gz", "has_sig": false, "md5_digest": "ef15cd68b48e9d8bcafebe8f0616866c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10333, "upload_time": "2017-05-22T08:57:14", "url": "https://files.pythonhosted.org/packages/a5/68/a05810073c7e4fb0447087fe47a25c21ded7e0bce4bd09d8054d4e9a996d/django-rest-framework-social-oauth2-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "61cde50132f30abb32167621d7064bd7", "sha256": "7e2374323094f409e2008f46cda8c057a3668580a3a6ea286c571e8191fb009a" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.7.tar.gz", "has_sig": false, "md5_digest": "61cde50132f30abb32167621d7064bd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10320, "upload_time": "2017-06-07T12:49:09", "url": "https://files.pythonhosted.org/packages/19/3a/907ff000d1e4ad978a055403c7f7cadf19ced021de0be49808ed1c284ecf/django-rest-framework-social-oauth2-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "4fcf1d31707fdffec644365aa92f4c5a", "sha256": "5dbb611beddad85445f193c15aeb97247655357f31b4cf65c0403f9d0fc062d1" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.0.8.tar.gz", "has_sig": false, "md5_digest": "4fcf1d31707fdffec644365aa92f4c5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10360, "upload_time": "2017-06-18T14:36:02", "url": "https://files.pythonhosted.org/packages/47/ac/2c9e20a6f70fd394b1f6164d39bf1c424c74243dea43e9ce8e5101747465/django-rest-framework-social-oauth2-1.0.8.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "194bc3c55b1b0e995a1c48e176277fcb", "sha256": "c9a297b636ffd37957c6146280e99ead41e6aca37bcb995e3d52d65eefbca0b7" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.1.0.tar.gz", "has_sig": false, "md5_digest": "194bc3c55b1b0e995a1c48e176277fcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10330, "upload_time": "2018-01-25T17:58:46", "url": "https://files.pythonhosted.org/packages/32/c6/63a2e0fe057eeb18f6adedee961d573bdf0dd1455df644403875ffc38bdf/django-rest-framework-social-oauth2-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "194bc3c55b1b0e995a1c48e176277fcb", "sha256": "c9a297b636ffd37957c6146280e99ead41e6aca37bcb995e3d52d65eefbca0b7" }, "downloads": -1, "filename": "django-rest-framework-social-oauth2-1.1.0.tar.gz", "has_sig": false, "md5_digest": "194bc3c55b1b0e995a1c48e176277fcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10330, "upload_time": "2018-01-25T17:58:46", "url": "https://files.pythonhosted.org/packages/32/c6/63a2e0fe057eeb18f6adedee961d573bdf0dd1455df644403875ffc38bdf/django-rest-framework-social-oauth2-1.1.0.tar.gz" } ] }