资讯专栏INFORMATION COLUMN

PHP实现微信网页授权开发教程

dcr309duan / 1288人阅读

摘要:微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息在此之前,想要获取消息信息只能在用户和公众号交互时根据获取用户信息而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息微信网页授权时通过完成的,整

微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前,想要获取消息信息只能在用户和公众号交互时根据openid获取用户信息;而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息

微信网页授权时通过OAuth2.0完成的,整个过程分为三步:

用户授权,获取code;
根据code获取access_token【可通过refresh_token刷新获取较长有效期】
通过access_token和openid获取用户信息

对微信网页授权过程做了简单封装:

/**

微信授权相关接口
*/

class Wechat {

//高级功能-》开发者模式-》获取
private $app_id = "xxx";
private $app_secret = "xxxxxxx";

/**

获取微信授权链接

@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";

}

/**

获取授权token

@param string $code 通过get_authorize_url获取到的code
*/

public function get_access_token($app_id = "", $app_secret = "", $code = "")
{

$token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";
$token_data = $this->http($token_url);
 
if($token_data[0] == 200)
{
  return json_decode($token_data[1], TRUE);
}
 
return FALSE;

}

/**

获取授权后的微信用户信息

@param string $access_token

@param string $open_id
*/

public function get_user_info($access_token = "", $open_id = "")
{

if($access_token && $open_id)
{
  $info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
  $info_data = $this->http($info_url);
   
  if($info_data[0] == 200)
  {
    return json_decode($info_data[1], TRUE);
  }
}
 
return FALSE;

}

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);

}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22748.html

相关文章

  • 200行代码实现微信支付-公众号支付,不再踩坑,附:demo

    摘要:开发微信支付需要认证服务号并且已经开通微信支付,获得微信支付商,设置了的。我看到了一个作者写的源码,还不错,我简单进行优化了,只有多行代码就可以实现公众号支付。要注意,订单标题不能为中文,否则会提示参数错误什么的。 开发微信支付需要认证服务号并且已经开通微信支付,获得微信支付商ID,设置apikey了的。 官方给了公众号支付的php源码SDK但是这个SDK文件非常多,源码乱七八糟的,真...

    lindroid 评论0 收藏0
  • 微信网页授权php版本

    摘要:微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息在此之前,想要获取消息信息只能在用户和公众号交互时根据获取用户信息而微信网页授权可在不需要消息交互,也不需要关注的情况下获取用户的基本信息微信网页授权时通过完成的,整 微信网页授权是服务号才有的高级功能,开发者可以通过授权后获取用户的基本信息;在此之前,想要获取消息信息只能在用户和公众号交互时根据openid获取...

    lifesimple 评论0 收藏0
  • 即插即用!适用于CodeIgniter框架的微信网页授权模块

    摘要:自制,即插即用微信网页授权模块,修改配置文件即可使用,开发测试版本仓库欢迎交流和关注。因为它需要在文件中缓存和。 自制,即插即用微信网页授权模块,修改配置文件即可使用,开发测试版本CodeIgniter 3.0.6 Github仓库: CodeIgniter-Weixin_Library欢迎交流和关注。 README.md CodeIgniter-Weixin_Library 即插即...

    Tecode 评论0 收藏0
  • python实现微信第三方网站扫码登录(Django)

    摘要:写在前面本周刚在项目中实现了微信第三方网站扫码登录。准备与注意事项微信公众平台跟微信开放平台是两个不同的平台,别搞混了。参数在微信开放平台中查看。 写在前面 本周刚在项目中实现了微信第三方网站扫码登录。因为第一次写相关项目,所以遇到了很多坑。所以写这篇文章是希望像我之前那样的小白也能从容的开发,不要浪费无谓的时间,这篇文章尽量写的详细简单。准备与注意事项 微信公众平台跟微信开放平台是...

    lemanli 评论0 收藏0
  • 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)

    摘要:本文是浅析微信支付系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。浅析微信支付前篇大纲微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。目前微信支付支持手机系统有苹果安卓和。 本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。 浅析微信支...

    shadowbook 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<