如何使用Postman通过dj_rest_auth实现Google登录认证
解决Postman中Google OAuth2令牌调用DRF API提示"invalid token"的问题
你遇到的核心问题是:Postman生成的是Google官方的Access Token,这个令牌仅能用于调用Google的服务,无法直接被Django REST Framework识别。必须通过dj_rest_auth提供的接口,将Google令牌转换为Django系统的认证令牌,才能正常调用你的API。
正确的Postman操作步骤
你的GoogleLogin视图映射到了/accounts/login/,所以需要向这个URL发送POST请求来完成令牌转换,具体操作如下:
方式1:使用Authorization Code(推荐)
- 在Postman中新建一个POST请求,URL填写:
http://localhost:8080/accounts/login/ - 切换到
Body标签,选择form-data格式,添加以下字段:grant_type:固定值authorization_codecode:Postman OAuth2授权流程中获取到的授权Codeclient_id:你的Google开发者控制台中的客户端IDclient_secret:你的Google开发者控制台中的客户端密钥redirect_uri:与Google开发者后台、Postman OAuth2配置完全一致的回调URL(比如http://localhost:8080/accounts/google/login/callback/)
方式2:直接使用Google Access Token
如果已经拿到Google的Access Token,可直接发送以下请求:
- 同样POST到
http://localhost:8080/accounts/login/ Body的form-data中添加:token:Postman生成的Google Access Tokentoken_type:固定值Bearer
发送请求后,接口会返回Django系统的认证令牌(包含access_token和refresh_token),后续调用API时,将这个access_token作为Bearer Token即可正常认证。
配置检查要点
- 回调URL一致性:确保
views.py中callback_url、Google开发者后台、Postman OAuth2配置里的回调URL完全一致(包括协议、端口、路径) - API权限:在Google开发者控制台中启用
People API(dj_rest_auth需要通过该API获取用户基本信息) - URL路由:确认你的
api_urls已正确包含dj_rest_auth的路由(通常是path('dj-rest-auth/', include('dj_rest_auth.urls'))),不过你单独配置的GoogleLogin视图已经覆盖了登录路径,这部分没问题。
补充说明
通过DRF UI生成的令牌之所以能正常使用,是因为DRF UI的登录流程已经自动帮你完成了“Google令牌→Django令牌”的转换步骤,而Postman直接拿到的是原始Google令牌,缺少这一步转换,才会出现invalid token错误。
内容的提问来源于stack exchange,提问作者kcEmenike
相关产品推荐
相关产品推荐

