添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

接入access_token-FAQ

更新时间: 2022-03-09

在填写了安全域名的前提下, 也一直提示【错误代码: redirect_uri_mismatch 】

  • 授权回调地址填完后1小时后生效,请耐心等待。
  • 请检查一下 控制台->应用->安全设置 里配置的Oauth授权回调地址是否和填写的一样。 3.basic 与 netdisk 中间逗号是否用的英文逗号。
  • 第二次及以后获取的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:

    http://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=5zXSu4beRLoMTleSglG83pLhKDDyq8m4&redirect_uri=oob&scope=basic,netdisk

    对于无server的应用 : 可传redirect_uri=oob。 回调后会返回一个平台提供默认回调地址( http://openapi.baidu.com/oauth/2.0/login_success )

    b. 输入(1)跳转至: https://openapi.baidu.com/oauth/2.0/login_success#expires_in=2592000&access_token=123.ded10a4f1111fc6bc62f627652cdda04.YsEOXkCZ7-Ws-dcvu65LLAdG47RmOoG_yeVTjXD.OxLuIg&session_secret=&session_key=&scope=basic+netdisk

    简化模式有效期较短,不支持刷新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 地址上,并带上文档中需要的参数

    示例: http://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=您应用的AppKey&redirect_uri=您应用的授权回调地址&scope=basic,netdisk

    授权模式中refresh token是一次性的吗?

    是的,refresh token 只能使用一次,刷新使用过后,会返回新的 refresh token

    通过Android SDK 方式接入的话,申请需要“Android包对应的签名”审核通过后, 如果之后更新迭代, 是每次打包都得重新申请一次吗?

    申请一次就可以了