我们的使命

助力跨境卖家高效建立全球销售网络

喜报2021年我司获《江苏省国家高新技术企业》认定

分类目录

文章标签

热门推荐

相关咨讯

opencart绑定域名,magento微信登录

2022-11-07 16:42:42 - 米境通跨境电商

   

    之前做过两次网页请求微信授权登陆,后来转到magento上面,主做国外的电商系统,导致这些开发经验都生疏了。为了后期在遇到同样问题的时候能够快速的找到解决方案,所以专门做个笔记,记录下来。

    首先微信授权登陆和其他的qq授权登陆、微博授权登陆都是采用的OAUTH2.0机制,大体的逻辑原理和步骤都很类似。具体的分为三步,

    1、根据APPID和回调地址等参数拼装请求的url,比较重要的就是appid,这个是在微信开放平台里面申请的网页应用,需要提交资质认证等。另外就是回调地址,这个必须和微信开放平台后台填写的授权域相同,不然则会提示错误,无法请求。

    publicfunctionwxlogin(){

    $AppID=C('WechatConfig')['AppID'];

    $AppSecret=C('WechatConfig')['AppSecret'];

    $callback="http://".$_SERVER['HTTP_HOST'].U("User/auth");

    $code=I('get.code');

    $state=md5(uniqid(rand(),TRUE)).$code;

    $_SESSION["wx_state"]=$state;//存到SESSION

    $callback=urlencode($callback);

    $wxurl="https://open.weixin.qq.com/connect/qrconnect?appid=".$AppID."&redirect_uri={$callback}&response_type=code&scope=snsapi_login&state={$state}¶m=abc#wechat_redirect";

    header("Location:$wxurl");

    }

    other|微信网页授权登陆开发示例

    PS:值得一提的是,在微信开放后台的应用里面修改授权域,此授权域可以为本地测试的域名,不用非得

    2、如果参数全都正确,就进入到扫描界面,等使用微信扫描确认之后,即可获取到一个code,有效期五分钟,然后可以使用此code去获取access_token和用户的openid以及unionid等信息,具体的方法可以参照下面代码:

    publicfunctiongetToken($code){

    $AppID=C('WechatConfig')['AppID'];

    $AppSecret=C('WechatConfig')['AppSecret'];

    $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$AppID.'&secret='.$AppSecret.'&code='.$code.'&grant_type=authorization_code';

    $ch=curl_init();

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);

    curl_setopt($ch,CURLOPT_URL,$url);

    $json=curl_exec($ch);

    curl_close($ch);

    $arr=json_decode($json,1);

    if($arr['errcode']!=''){

    return'';

    }else{

    session('access_token',$arr['access_token']);

    session('openid',$arr['openid']);

    return$arr;

    }

    }

    publicfunctiongetUserInfo($token,$openid){

    $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$token.'&openid='.$openid.'&lang=zh_CN';

    $ch=curl_init();

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);

    curl_setopt($ch,CURLOPT_URL,$url);

    $json=curl_exec($ch);

    curl_close($ch);

    $userinfo=json_decode($json,1);

    if($userinfo['errcode']!=''){

    return'';

    }else{

    return$userinfo;

    }

    }

    3、最后特别说明一下,access_token有效期两个小时。然后需要先获取access_token,然后才能用该数据去获取用户的信息。另外还有一种情况,就是在pc端使用此方法没问题,但是如果是在微信客户端下,依旧是扫码界面,那就尴尬了。不过有一个客户的网站在pc端自动展示扫码界面,在微信客户端则自动提示公众号授权的界面,这个是配置方面的问题还是开发方面的具体还不清楚,略坑。最后为了以后的方便使用,封装一个第三方登陆的类,需要的直接引用即可。
相关问答:
    联系我们
  • 24H客服
  • 联系电话:16651690460(陈经理)
  • 微信咨询:
南京天遥路联网络科技有限公司,版权所有 Copyright By ©米境通ERP4.0,2015-2025,苏ICP备:苏ICP备15044100号-4, 苏公网安备:32011402011043