微信授权问题

发布于 2022-09-06 06:41:07 字数 2862 浏览 29 评论 0

web开发者工具调试就有
clipboard.png
没问题
授权登陆的页面
但是到了手机测试
就没有这个页面但是也可以获取openid 这是什么原因?

代码应该是没问题的,因为另一个项目没有出现这种问题

  //根据授权code获取用户id 
public static function weixin(){
  $code=!empty($_GET['code'])?trim($_GET['code']):'';
  if(!$code){
    header("location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=".APPID."&redirect_uri=http%3a%2f%2fjiaogui.sunaon.com&response_type=code&scope=snsapi_userinfo#wechat_redirect");
    exit;
  }
//获取access_token跟openid
  $pdata=array(
    'appid'=>APPID,
    'secret'=>APPSECRET,
    'code'=>$code,
    'grant_type'=>'authorization_code'
    );
  $data=self::post("https://api.weixin.qq.com/sns/oauth2/access_token",$pdata);
  $data=json_decode($data);
  $access_token=$data->access_token;
  $openid=$data->openid;
//将用户的信息录到数据库去
   self::post_user_info($openid,$access_token);
  //var_dump($openid);exit;
  echo $openid; 
}


public static function post($url,$data){      
  $postdata = http_build_query($data);
  $opts = array('http' =>array('method'=>'POST','header'=>'Content-type: application/x-www-form-urlencoded','content'=>$postdata));
  $context = stream_context_create($opts);         
  $result = file_get_contents($url,true,$context);     
  return $result;
}

public static function post_user_info($openid,$access_token){
    $sql="select * from `user_info` where `openid`='{$openid}'";
    $user=Db::getAll($sql);
  if(!$user){
    $url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";
    $json = file_get_contents($url);
    $std = json_decode($json);
    $nickname=$std->nickname;
    $sex=$std->sex;
    $city=$std->city;
    $country=$std->country;
    $province=$std->province;
    $headimgurl=$std->headimgurl;
    $subscribe_time=$regtime=time();
    $sql="INSERT INTO `user_info` (`openid`,`sex`, `nickname`,`city`,`country`,`province`,`headimgurl`,`subscribe_time`) VALUES ('{$openid}','{$sex}','{$nickname}','{$city}','{$country}','{$province}','{$headimgurl}','{$subscribe_time}')";
    $act1=Db::execute($sql);
    if(!$act1){
    self::error('404','获取openid失败','404');    
    }
    session_start();
    $_SESSION["userid"]=$openid;
      }else{
        $_SESSION["userid"]=$openid;
     }
}

我将 获取用户的信息的json数据 打印出来
在web开发者工具

clipboard.png

另一个用户手机测试是

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尾戒 2022-09-13 06:41:07

微信网页授权有两种
一种是至获取openid,静默授权,不能获取昵称 地区头像等信息
另一种是 可以获取 昵称 地区头像等信息 需要像你截图的弹窗确认

人海汹涌 2022-09-13 06:41:07

微信公众号获取有两种授权方式,请认真看一下微信公众号开发文档

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文