Python Django restframework可浏览api登录,使用ouath

Python Django restframework可浏览api登录,使用ouath,python,django,django-rest-framework,Python,Django,Django Rest Framework,我使用djangorestframework创建了一个示例api,它工作得很好,我可以毫无问题地使用browsable api。然后我添加了官方网站上提到的outh2认证,这也很好。我可以使用以下命令获取访问令牌 curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=

我使用djangorestframework创建了一个示例api,它工作得很好,我可以毫无问题地使用browsable api。然后我添加了官方网站上提到的outh2认证,这也很好。我可以使用以下命令获取访问令牌

curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/
我还可以使用curl通过访问令牌来浏览我的api

curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/

但在使用browsable api时,我无法浏览我的api,原因很明显,browsable api既没有获取任何访问令牌,也没有使用任何访问令牌。我想我需要有这个登录。因此,我没有得到我可以自定义当前登录我必须使用oauth

Web浏览器通常不允许您设置自定义头,因此无法提供OAuth令牌

通常,如果要使用可浏览的API,则需要允许基于会话的身份验证(即基于cookie的身份验证)

您可以同时允许这两种身份验证方法,如果有必要,可以限制用于开发的会话身份验证


我希望这能有所帮助。

我目前正在使用Django REST框架,在安装Django OAuth Toolkit与之协同工作时遇到了完全相同的问题。要解决此问题,请打开settings.py并确保将
rest\u framework.authentication.SessionAuthentication
添加到“rest\u framework”下的“默认\u身份验证\u类”条目中。它应该看起来像

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'oauth2_provider.ext.rest_framework.OAuth2Authentication',
        'rest_framework.authentication.SessionAuthentication',
    ],
}

有了这个设置,您应该能够查看可浏览的API,甚至可以通过使用Django的会话身份验证登录来执行POST请求。

Wow。那救了我的命。真不敢相信我花了这么多时间测试各种不同的设置和不同身份验证的顺序。。