百度 pcs api 使用小记

利用Implicit Grant授权的模式,在授权认证之后直接从回调链接URL获取access_token,优点是方便,不需要后端,缺点是不能刷新access_token,每一个月需要重新授权一次。适合轻网页应用。

授权链接:

https://openapi.baidu.com/oauth/2.0/authorize?response_type=token?client_id=CLIENT_ID?redirect_uri=http%3A%2F%2REDIRECT.URI%?scope=basic+netdisk?display=popup

从回调地址获取access_token:

function getQueryStringRegExp(name) {
  var reg = new RegExp("(^|?|&)" + name + "=([^&]*)(s|&|$)", "i");
  if (reg.test(location.href)) return unescape(RegExp.$2.replace(/+/g, " "));
  return null;
}; //这个函数用以直接获取地址栏URL中的某个fragment

可以直接使用本页面作为回调页面。加一个授权验证即可。

var accessToken = getQueryStringRegExp('access_token'); // 获取access_token
if (accessToken != null) { // 如果access_token存在,就直接进行用户授权验证
  $.ajax({
    url: 'https://openapi.baidu.com/rest/2.0/passport/users/isAppUser?access_token=' + accessToken,
    dataType: 'jsonp'
  }).done(function(data) {
    var isAuth;
    if (data.result == 1) { // 授权验证的返回值中的result参数为'1'的话,就是已经授权了
      isAuth = '已授权';
      /* 获取授权用户基本信息 */
      $.ajax({
        url: 'https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token=' + accessToken,
        dataType: 'jsonp'
      }).done(function(data) {
        /*
        data.uid 用户数字id
        data.uname 用户名
        data.portrait 用户头像id
        头像的链接为:
        small image: http://tb.himg.baidu.com/sys/portraitn/item/{$portrait}
        large image: http://tb.himg.baidu.com/sys/portrait/item/{$portrait}
        */
      });
      /* 获取授权用户的个人云存储的基本信息 */
      $.ajax({
        url: 'https://pcs.baidu.com/rest/2.0/pcs/quota?method=info?access_token=' + accessToken,
        dataType: 'jsonp'
      }).done(function(data) {
        /*
        data.quota 是空间总量
        data.used 是已用容量
        */
      });
    } else {
      isAuth = '未授权'; // 未授权的result值为'0'
    }
  });
}