阿里云

微信小程序开发-注册账号

微博登录原理,简单介绍一下,通过特定网址携带固定参数,发起请求登录,之后通过回调地址,获取code值,通过code值获取access_token值和uid值,通过上面获取的值获取用户信息。

 

以下基础信息简要介绍一下

一、申请账号

地址:https://weibo.com/signup/signup.php,

 

二、完善信息

完善信息,实名认证等操作

 

三、申请应用

 

使用注册账号进入微博开放平台(https://open.weibo.com/),登录账户。

image.png

image.png

选择“微博登录”,并填写相关信息,完善应用。

 image.png

四、应用审核

 

获取相关信息,App key 和 App Sercet,以及填写回调地址。

 image.png

image.png


五、前端代码

 

填写“App key” 和“回调地址”,将链接上的**顺序替换

<a class="btn btn-info" href="https://api.weibo.com/oauth2/authorize?client_id=*****&response_type=code&redirect_uri=******">微博登录</a>


六、php代码

/**
* 微博回调
*/
public function wbback()
{
   //参数设置
   $Client_id     = "***";    //appkey
   $Client_secret = "***";    //App Sercet
   $Redirect_uri  = "***"; //回调地址
   //接收code值
   $Code = input('get.code');
   if (!$Code) $this->error("code获取失败!");
   //获取access_token
   $url  = "https://api.weibo.com/oauth2/access_token?client_id=$Client_id&client_secret=$Client_secret&grant_type=authorization_code&redirect_uri=$Redirect_uri&code=$Code";
   $info = $this->httpsRequest($url);
   //json转数组
   $info_json = json_decode($info, true);
   //获取access_token和uid,用于获取用户信息
   $access_token = $info_json['access_token'];
   $uid          = $info_json['uid'];

   if ($info) {
       //设置中文字符集
       header("Content-type:text/html;charset=utf-8");
       //获取用户信息
       $info_url = "https://api.weibo.com/2/users/show.json?access_token=$access_token&uid=$uid";
       $ch       = curl_init();
       //设置选项,包括URL
       curl_setopt($ch, CURLOPT_URL, $info_url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($ch, CURLOPT_HEADER, 0);
       //执行并获取HTML文档内容
       $output = curl_exec($ch);
       curl_close($ch);
       //此处可打印用户所有信息
       //dump($output);
       $userinfo = json_decode($output, true);
       $username = $userinfo['screen_name'];
       echo "登录成功,用户名:$username";
   }
}

/**
* httpsRequest
* @param $url
* @param $post_data
* @return mixed
*/
public function httpsRequest($url, $post_data)
{
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   // 设置请求为post类型
   curl_setopt($ch, CURLOPT_POST, 1);
   // 添加post数据到请求中
   curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

   // 执行post请求,获得回复
   $res = curl_exec($ch);
   curl_close($ch);
   return $res;
}


喜欢就点个赞吧

发表评论

需要先登录,才能发表评论哦!登录

网友评论
暂无评论