微信公众号关注后直接登录网站

来源:互联网 发布:阿里云小图标 编辑:程序博客网 时间:2024/06/08 11:30

1,获取code

在要实现的地方调用最后的网址,这里需要两项,appid和返回的网址

var appid="{:C('WX_APPID')}";
var back_url="{:U('wx_signback')}";
window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=http://www.baidu.cn"+back_url+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";


2,在返回的网址里获取登录者的信息写到数据,

//微信一键登录
public function wx_signback(){
//获得code
$code=$_GET['code'];//获取code
$access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".C('WX_APPID')."&secret=".C('WX_APPSECRET')."&code=".$code."&grant_type=authorization_code";
$access_token=$this->curl_data($access_token_url);//获取access_token和openid
    $user_url="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token['access_token']."&openid=".$access_token['openid']."&lang=zh_CN";
    $user_info=$this->curl_data($user_url);//获取微信的客户信息
    $db_user=M("user");
    $user_openid=$user_info['openid'];//openid
    $user_title=$user_info['nickname'];//昵称
    $user_sex=$user_info['sex'];//性别
    $user_city=$user_info['city'];//市
    $user_province=$user_info['province'];//省份
    $user_country=$user_info['country'];//国家
    $user_image=$user_info['headimgurl'];//头像
$data_user=array(
'username'=>$user_openid,
'nickname'=>$user_title,
'user_sex'=>$user_sex,
'user_picture'=>$user_image
);
$db_user->where("id=".$this->UID)->save($data_user);
redirect(U("reg_step"));
}


//curl方法
public function curl_data($url,$data = null){
  $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
   if (!empty($data)){
       curl_setopt($curl, CURLOPT_POST, 1);
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
   }
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   $output = curl_exec($curl);
   curl_close($curl);
   $info_result=json_decode($output,true);
   return $info_result;
}

0 0