阿里云

第三方登录之微博登录

第三方登录之百度登录


一、首先,前提条件

(1)你得有个熊账号,关于熊掌号申请请移步:熊掌号申请方法;

(2)有自己的服务器

(3)有百度站长平台


二、登录百度站长平台,在左侧点击“原创保护”,进入百度资源搜索平台-移动专区。

image.png

三、在搜索平台-移动专区,左侧栏目内找到“开发->开发设置”进入,设置“网页授权域名”。

image.png

image.png

四、设置服务器配置信息。

image.png


五、在左侧列表中,“开发->接口权限”,进入选择“百度帐号网页授权”,查看接口文档。


image.png

六、代码


(1)流程


第一步:引导用户完成授权获取code


第二步:获取网页授权access_token


第三步:获取授权用户信息


第四步:按需刷新access_token

(2)服务器配置接口代码(此处需要验证)

/**
* 用sha1算法生成安全签名
* @param string $strToken 票据
* @param string $intTimeStamp 时间戳
* @param string $strNonce 随机字符串
* @param string $strEncryptMsg 密文消息
* @return string
*/
function getSHA1($strToken, $intTimeStamp, $strNonce, $strEncryptMsg = '')
{
   $arrParams = [
       $strToken,
       $intTimeStamp,
       $strNonce,
   ];
   if (!empty($strEncryptMsg)) {
       array_unshift($arrParams, $strEncryptMsg);
   }
   sort($arrParams, SORT_STRING);
   $strParam = implode($arrParams);
   return sha1($strParam);
}

/**
*百度开发验证
*/
public function baidu()
{
   //你的token
   $TOKEN        = 'a';
   $strSignature = $this->getSHA1($TOKEN, $_GET['timestamp'], $_GET['nonce']);
   if ($strSignature == $_GET['signature']) {
       echo $_GET['echostr'];
   } else {
       //校验失败
       echo 'failed';
   }
}


(3)登录代码

/**
* 百度登录请求
*/
public function bdsend()
{
   $APPID        = "1qEjVd0IiisiYkjsWekYktO2dX****";
   $REDIRECT_URI = "http://www.shenlin.ink/Open/baiduback";
   $SCOPE        = "snsapi_userinfo"; //此处需写此参数
   $url          = "https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=$APPID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&state=STATE";
   header("Location: $url");
}

/**
* 百度登录token获取
* @return mixed
*/
public function baiduToken($code)
{

   $CLIENT_ID    = "1qEjVd0IiisiYkjsWekYktO2****";
   $APPSECRET    = "Ajt0FmFSH4gOyYmaXUDxZQGRA*****";
   $REDIRECT_URI = "http://www.shenlin.ink/Open/baiduback";
   $url          = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=$code&client_id=$CLIENT_ID&client_secret=$APPSECRET&redirect_uri=$REDIRECT_URI";
   $data         = $this->httpsRequest($url);
   return json_decode($data, true);
}

/**
* 第三方登录之百度登录
* @return \think\response\Json
*/
public function baiduback()
{
   $code         = input('get.code');
   $data         = $this->baiduToken($code);
   $ACCESS_TOKEN = $data['access_token'];
   $OPENID       = $data['openid'];
   $url          = "https://openapi.baidu.com/rest/2.0/cambrian/sns/userinfo?access_token=$ACCESS_TOKEN&openid=$OPENID";
   $userInfo     = $this->httpsRequest($url);
   return json(['code' => 200, 'msg' => '获取成功', 'data' => $userInfo]);
   //后续请自行开发
}


(3)curl请求

/**
* httpsRequest
* @param $post_url
* @return mixed
*/
public function httpsRequest($post_url)
{
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $post_url);//要访问的地址
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//执行结果是否被返回,0是返回,1是不返回
   curl_setopt($ch, CURLOPT_TIMEOUT, 30);//设置超时
   $res = curl_exec($ch);//执行并获取数据
   curl_close($ch);
   return $res;
}


七、后续开发请自行扩展。

喜欢就点个赞吧