问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php手机端怎么获取微信openid

发布网友 发布时间:2022-04-23 04:30

我来回答

3个回答

懂视网 时间:2022-05-11 09:24

使用微信接口,无论是自动登录还是微信支付我们首先需要获取的就是openid,获取openid的方式有两种,一种是在关注的时候进行获取,这种订阅号就可以获取的到,第二种是通过网页授权获取,这种获取需要的是认证服务号。

今天我要说的是第二种网页授权获取openid。下面是我写的一个关于获取openid的类

<?php
/**
 * 微信授权相关接口
 * 
 * @link http://www.phpddt.com
 */
class Wchat
{
 private $app_id = 'wx444444444444';
 private $app_secret = '77777777';
 private $state='aaaa';
 /**
 * 获取微信授权链接
 * 
 * @param string $redirect_uri 跳转地址
 * @param mixed $state 参数
 */
 public function get_authorize_url($redirect_uri = '', $state = '')
 {
 $redirect_uri = urlencode($redirect_uri);
 return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
 }
 /**
 * 获取微信openid
 */
 public function getOpenid($turl)
 {
 if (!isset($_GET['code'])){
  //触发微信返回code码
  
  $url=$this->get_authorize_url($turl, $this->state);
  
  Header("Location: $url");
  exit();
 } else {
  //获取code码,以获取openid
  $code = $_GET['code'];
  $access_info = $this->get_access_token($code);
  return $access_info;
 }
 
 }
 /**
 * 获取授权token网页授权
 * 
 * @param string $code 通过get_authorize_url获取到的code
 */
 public function get_access_token($code = '')
 {
 $appid=$this->app_id;
 $appsecret=$this->app_secret;
 
 $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
 //echo $token_url;
 $token_data = $this->http($token_url);
 // var_dump( $token_data);
 if($token_data[0] == 200)
 {
  $ar=json_decode($token_data[1], TRUE);
  return $ar;
 }
 
 return $token_data[1];
 }
 
 
 public function http($url, $method='', $postfields = null, $headers = array(), $debug = false)
 {
 $ci = curl_init();
 /* Curl settings */
 curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
 curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
 curl_setopt($ci, CURLOPT_TIMEOUT, 30);
 curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
 
 switch ($method) {
  case 'POST':
  curl_setopt($ci, CURLOPT_POST, true);
  if (!empty($postfields)) {
   curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
   $this->postdata = $postfields;
  }
  break;
 }
 curl_setopt($ci, CURLOPT_URL, $url);
 curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($ci, CURLINFO_HEADER_OUT, true);
 
 $response = curl_exec($ci);
 $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
 
 if ($debug) {
  echo "=====post data======
";
  var_dump($postfields);
 
  echo '=====info=====' . "
";
  print_r(curl_getinfo($ci));
 
  echo '=====$response=====' . "
";
  print_r($response);
 }
 curl_close($ci);
 return array($http_code, $response);
 }
 
}
?>

getOpenid($turl)这个方法就是获取openid的方法。前端调用代码如下:

 $openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';
 
  if(empty($openid))
  {
  $wchat=new wchat();
  $t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';
  
  $info=$wchat->getOpenid($t_url);
  
  if($info){
   $openid=$info['openid'];
   setcookie('openid',$openid,time()+86400*30); 
   
  }
  
  }

热心网友 时间:2022-05-11 06:32

  //***方法一
  获取code
  https://open.weixin.qq.com/connect/oauth2/authorize?appid=这里是你的公众号的APPID&redirect_uri=http://www.xx.com/getcode&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect
  用户点击确认登录,自动跳转下面地址得到code
  http://www.xx.com/getcode 这个是你自己的跳转地址
  http://www.xx.com/getcode?code=0064f7afef7af7b395147bfe8b51f7bf&state=123
  后面的这个 ?code=……123 是微信自动跳转添加的,不是你自己加的
  下面是PHP语言,写在getcode这个页面里
  $code = $_GET['code'];//获取code
  $weixin = file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=这里是你的APPID&secret=这里是你的SECRET&code=".$code."&grant_type=authorization_code");//通过code换取网页授权access_token
  $jsondecode = json_decode($weixin); //对JSON格式的字符串进行编码
  $array = get_object_vars($jsondecode);//转换成数组
  $openid = $array['openid'];//输出openid
  //***方法二
  $appid = "公众号在微信的appid";
  $secret = "公众号在微信的app secret";
  $code = $_GET["code"];
  $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$get_token_url);
  curl_setopt($ch,CURLOPT_HEADER,0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  $res = curl_exec($ch);
  curl_close($ch);
  $json_obj = json_decode($res,true);
  //根据openid和access_token查询用户信息
  $access_token = $json_obj['access_token'];
  $openid = $json_obj['openid'];
  $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$get_user_info_url);
  curl_setopt($ch,CURLOPT_HEADER,0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  $res = curl_exec($ch);
  curl_close($ch);
  //解析json
  $user_obj = json_decode($res,true);
  $_SESSION['user'] = $user_obj;
  print_r($user_obj);

热心网友 时间:2022-05-11 07:50

要开发者模式干啥用的? 不是有文档么? 或者你的具体需求是什么
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
福如东海终身寿险(A款)(分红型)能退多少钱 我买的新华人寿保险福如东海A型,但是想退了。 杭州樱花日语学校的学习效果如何得到管理与跟踪? 枣子不能与什么一起吃 枣子和什么食物相克 枣子和什么相克 枣子跟什么不能一起吃 电风扇带不动风叶拿掉风叶能转是怎么回事 嵌入式学习首先要学什么基础 学习嵌入式的基础是什么 培训班都有哪些培训? 培训班属于其他教育机构吗?教育法不是规定:任何组织和个人不得以盈利为目的举办学校及其他教育机构。 求php 微信大神求解以下网页授权的问题 PHP开发,微信开放平台授权的问题 从事一个没得任何基础的工作,想通过自学或者培训班的方法,达到自己的愿望,靠谱吗? PHP通过oauth2.0获得微信授权后用户的信息, 之后该怎么设计 培训班的种类 php微信授权登录怎么提供接口 社会法培训班,怎么挑选好的啊? 如何开培训班 PHP网站使用微信第三方登录问题,因为有多个域名,而微信官方只能授权 一共有哪些种类的培训班 请问一下PHP如何实现微信扫码登录PC网站? 美术培训班宣传方法 选择培训班应注意哪些方法 php如何通过cookie获取微信授权登录前页面URl 如何创办学习培训班,法律法规是什么? 怎么办培训班,流程有哪些? 怎么样能办好一个培训班? PHP如何实现微信网页授权 php实现QQ微信手机号登录为一个用户 请问大家理财产品排行哪个收益比较稳定? 比较安全的理财产品有哪些,排行? 投资理财产品有哪些? 理财产品排行哪个好2020银行有那些理财有稳健型保质的? 投资理财渠道按风险等级排序,由高到低是什么? 排名排行榜:哪家银行理财产品收益最高 手机打不出去电话怎么回事? 我的电话怎么打不通呢? 电话打不出去,别人也打不进来,是怎么回事? 电话怎么打不通啊,什么原因 打的电话怎么打不通? 电话打不通,是怎么回事 我手机怎么打不出去电话 消除手机wifi感叹号重启 面片怎么和面? 咋煮面,请说下详细步骤,还有要什么配料 求“飞”字的图片作头像 怎么和面?? “飞”字唯美图片