资讯专栏INFORMATION COLUMN

微信公众平台OAuth2.0 认证

iflove / 2260人阅读

摘要:若用户禁止授权,则重定向后不会带上参数,仅会带上参数点击修改第二步封装拉取用户信息类公共账号公众账号接收参数第一步根据获取第二步根据获取的和存放认证的第三步拉取信息返回数据格式郑州河南中国带有用户信息数组微信认证类下载认证下载

第一步:引导用户打开如下链接 (详细介绍见OAuth2.0)

$url = urlencode("http://xxx.com/xxx");
$newurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx9c807c944920c501&redirect_uri=$url&response_type=code&scope=snsapi_base&state=123#wechat_redirect";

注意这里需要去配置redirect_uri 回调URL的授权域名
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE


点击修改

第二步:封装拉取用户信息类

public function Oauth($code="",$mode=0){
    $appid = $this->AppId ;  //公共账号 appid
    $secret = $this->AppSecret ;  //公众账号AppSecret 
    if($code=="") $code = $_REQUEST["code"] ; //接收参数
    if(!$code) return false ;
    $cul = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$secret."&code=".$code."&grant_type=authorization_code" ;
    $cx = file_get_contents($cul) ;
    $bx = json_decode($cx,true) ;
    if($bx["errcode"]){
        //第一步 根据code获取refresh_token
        $this->restat = 0 ;
        $this->errmsg = $bx ;  return  ;
    }
    $rtoken = $bx["refresh_token"] ;
    $rurl = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=".$appid."&grant_type=refresh_token&refresh_token=".$rtoken ;
    $rr = file_get_contents($rurl) ;
    $rr = json_decode($rr,true) ;
    if($rr["errcode"]){
        //第二步 根据refresh_token获取的access_token和openid
        $this->restat = 0 ;
        $this->errmsg = $bx ;  return  ;
    }
    $acct = $rr["access_token"] ;
    //file_put_contents("abc.txt", $acct);
    $this->auth_access_token = $acct ; //存放认证的token

    $openid = $rr["openid"] ;
    if($mode == 0 ) return  ;
    //第三步拉取信息
    $purl = "https://api.weixin.qq.com/sns/userinfo?access_token=$acct&openid=$openid&lang=zh_CN" ;
    $xv = file_get_contents($purl) ;
    //file_put_contents("xv.txt", $xv);
    /*$xv返回数据格式
        {"openid":"XXX","nickname":"Mini_Ren","sex":1,"language":"zh_CN","city":"郑州","province":"河南","country":"中国","headimgurl":"","privilege":[]}
    */
    $xv = json_decode($xv,true) ;
    if($xv["errcode"]){
        $this->restat = 0 ;
        $this->errmsg = $bx ;  return  ;
    }
    $this->res = $xv ;
    return $xv ; //带有用户信息数组
}

PS:微信Oauth认证类下载 Oauth认证下载

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

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

相关文章

  • 基于oauth 2.0 实现第三方开放平台

    摘要:本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动能够满足绝大多数开放平台认证授权的需求。 本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。 什么是开放平台 通过开放自己平台产品服务的各种API接口,让其他第三方开发者在开发应用时根据需求直接调用,例如微信登录、QQ登录、微信支付、微博登录...

    Simon 评论0 收藏0
  • 基于oauth 2.0 实现第三方开放平台

    摘要:本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。它的特点就是通过客户端的后台服务器,与服务提供商的认证服务器进行互动能够满足绝大多数开放平台认证授权的需求。 本文单纯从简单的技术实现来讲,不涉及开放平台的多维度的运营理念。 什么是开放平台 通过开放自己平台产品服务的各种API接口,让其他第三方开发者在开发应用时根据需求直接调用,例如微信登录、QQ登录、微信支付、微博登录...

    xiaodao 评论0 收藏0
  • 说说微信扫码登录

    摘要:详情接口我们这里主要讲的是网站应用,网站应用微信登录是基于协议标准构建的微信授权登录系统即上面的协议。在微信客户端授权登录获取用户信息的可以查看。微信授权登录目前支持模式,适用于拥有端的应用授权。 一、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 ...

    Jokcy 评论0 收藏0

发表评论

0条评论

iflove

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<