接入access_token-FAQ
更新时间: 2022-03-09
在填写了安全域名的前提下, 也一直提示【错误代码: redirect_uri_mismatch 】
第二次及以后获取的access_token为何无效?
请确认一下access_token是不是过期了。如果申请了两次token, 第二次申请会导致第一次申请的access_token失效。
获取用户access_token后,是否可以将文件上传到用户的网盘?
作为开发者在获取到用户access_token后,是可以将文件上传到用户的网盘而非开发者的网盘。
更多帮助内容可查看 https://pan.baidu.com/union/doc/0ksg0sbig
网盘接口只告诉了授权接口,没告诉注销接口,无法切换账号登录?
接口注销不支持。用户可以在网盘操作解除授权。
具体路径: 设置->账号管理->授权管理->找到对应的应用->解除授权
第三方用户授权,除了扫码获取授权码再获取access_token的方法外,是否有其他授权渠道?
您好, 接入流程里的授权链接默认就是用百度账号密码登录的,示例链接: http://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=fSds3K4a2kDwacw93rw47t0qlQmTzO4U&redirect_uri=oob&scope=basic,netdisk&display=popup&state=xxx
更多接入方式可参考帮助文档中接入授权的部分: https://pan.baidu.com/union/doc/ol0rsap9s
能不能把 access_token分发给很多客户端去下载网盘里面的文件?
这种方式会涉及access_token泄漏,其他人可以使用access_token操作网盘内容,出于安全等多方面因素考虑不推荐使用,谢谢。
是否可以只获取授权二维码图片的官方接口实现授权?
出于账号安全考虑,只能在百度页面进行登录授权。
是否可以通过获取用户账户和密码后去请求官方接口,实现授权?
出于账号安全考虑,只能在百度页面进行登录授权。
redirect_uri,获取授权码的回调,收到的数据是什么结构,是否可以定义参数以用来区分哪个用户哪个时间进行的授权?
授权后能拿到access_token,区分用户可以请求获取用户信息接口,返回的uk唯一标识用户。如用户同意授权,页面跳转至YOUR_REGISTERED_REDIRECT_URI/?code=CODE,用CODE换取Access_token,开发者需要再回调页通过url获取回调参数。
授权回调页的地址必须要填写公网地址吗,可以填写本地地址吗?
不可以的。
百度网盘是不支持百度OAuth2.0中的授权场景→设备使用的场景吗?
目前不支持Device授权了,可采用其他两种方式授权。
一、 server端获取授权模式——应用有自己的server端 授权码模式
推荐使用授权码模式(grant_type=authorization code)获取授权: 先获取code, 再用code获取access token(同时还会得到access_token的有效期expires_in、 用于刷新access_token的refresh_token)。
code: 是作为换取access_token的票据。 code只能使用一次, 10分钟未被使用自动过期。
硬件厂商需传入device_id参数。
二、 移动端获取授权模式——应用无server端 简化模式
a. 跳过授权码步骤, 直接获取 (1)access_token:
对于无server的应用 : 可传redirect_uri=oob。 回调后会返回一个平台提供默认回调地址( http://openapi.baidu.com/oauth/2.0/login_success )
简化模式有效期较短,不支持刷新access_token,过期后用户需重新登录授权。 详细可参考文档: https://pan.baidu.com/union/doc/0ksg0sbig
SDK的demo看起来只提供了“授权码模式”,我该如何用它来实现“简化模式授权”
sdk不支持简易授权模式,需要自己写接口请求
简化模式用户通过用户名和密码登录以后,页面跳转到login/success,桌面应用如何捕捉并处理呢?
需要开发者提供一个对外的回调地址,当授权成功后,百度服务器会调用这个回调地址,并且把access_token附加到这个链接的参数里面,开发者的server可以拿到对应的参数,进行存储和记录。这样就能走通整个流程了
error":"invalid_request","error_description":"invalid refresh"
用户取消授权 或者 重新授权了, 使用之前分配的refresh token 就会出现这个问题,需要用户重新授权
已成功获取access token 并能够通过refresh token刷新access token 但是使用access token的时候仍会返回{'errmsg':'Invalid Bduss', 'errno':-6}
1 错误码errno=-6表示接口登录鉴权失败。 原因通常为调用接口时携带的access_token参数已过期或无效。
2 建议参照技术文档中接入流程的相关说明重新获取access_token: https://pan.baidu.com/union/doc/0ksg0sbig
3 获取token时, 请注意scope参数, 固定传scope=basic,netdisk。 如果未按要求传参, 在访问接口时, 会返回errno=-6的错误码。
4 验证access_token是否有效可以用/rest/2.0/xpan/nas?method=uinfo(文档 https://pan.baidu.com/union/doc/pksg0s9ns)接口确认access_token的有效性。 如果接口返回-6, 说明 access_token失效或其access_token的scope为basic, 未对网盘授权, 需要重新获取access_token。
授权模式,需要人工录入用户名及密码,支持通过在参数里直接加入用户名密码吗?
不支持,必需人工介入
三种授权模式中简化模式适用于无 server 端配合的应用。 但是授权时序图中为什么还有开发者服务器端?
您好,简化模式不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌
获取Access Token应用需要将用户浏览器(或手机/桌面应用中的浏览器组件)引导到百度应用开放平台OAuth2.0授权服务的
http://openapi.baidu.com/oauth/2.0/authorize 地址上,并带上文档中需要的参数
授权模式中refresh token是一次性的吗?
是的,refresh token 只能使用一次,刷新使用过后,会返回新的 refresh token
通过Android SDK 方式接入的话,申请需要“Android包对应的签名”审核通过后, 如果之后更新迭代, 是每次打包都得重新申请一次吗?
申请一次就可以了