前段时间做完微商城了,来把微信商城学到的一些东西分享一下,希望对各位有所帮助。

PHP做后台,先来说微信商城的授权登录吧!这个几乎都有,这个功能代码其实不多,主要是看懂文档需求。

前提:要有公众号,和通过微信认证,得到相应信息,appid,appsecret等。

看看效果图:

获取信息有:用户昵称,性别,头像,国家等

微信开发文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

第一步:获取code

    /****
* 点击进入登录调用
*/
function index() {
/***
* 跳转得到code
* 回调地址 列http://xxxxxx/?m=weixin&c=wxtest&a=wxcode
*
*/
$this->getCode("http://xxxxxx/?m=home&c=wxlogin&a=wxcode"); } /**
* 第一步
* 获取CODE
* @param string $weixin_uri
* appid 是 公众号的唯一标识
* redirect_uri 是 授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理
* response_type 是 返回类型,请填写code
* scope 是 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )
* state 否 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
* #wechat_redirect 是 无论直接打开还是做页面302重定向时候,必须带此参数
*
*/
private function getCode($redirect_uri){
$weixin_uri = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appid;
$weixin_uri.= '&redirect_uri='.urlencode($redirect_uri).'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
$this->redirect($weixin_uri); }

第二步:获取回调方法接收code,通过code换取网页授权access_token

/****
* 回调地址
* 获取code
*/
function wxcode(){      //验证是否得到参数code,做相应处理
if ($_GET['code']) { }
//得到回调接口的参数code
$code=$_GET['code']; /***
* 第二步:通过code换取网页授权access_token
* 首先请注意,这里通过code换取的是一个特殊的网页授权access_token,
* 与基础支持中的access_token(该access_token用于调用其他接口)不同。
* 公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,
* 则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
* 尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。
* 后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
*
*/
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appid;
$url.= '&secret='.$this->appsecret.'&code='.$code.'&grant_type=authorization_code';
      //get请求,得到access_token,openid等信息
$data = json_decode(httpGet($url), true);    //打印数据
echo $code;
print_array($data); //第三步 可省略 刷新access_token(如果需要)
//由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,
//refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。 //第四步 获取用户信息
//如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
//http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
if ($data['openid'] && $data['access_token']) {
$json = httpGet("https://api.weixin.qq.com/sns/userinfo?access_token=$data[access_token]&openid=$data[openid]&lang=zh_CN");
$user=json_decode($json, true);
// print_array($user); //打印信息
} // exit();
     $this->assign('user',$user);
//跳转界面显示所获取的信息
$this->display("wxcode");
}

正确时返回的JSON数据包如下:

{    
"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

注:我用到的参数  appid,appsecret在父类中

PHP不管用什么框架,只要步骤对,都能实现。

PHP--------微商城实现微信授权登录的更多相关文章

  1. 微信公众平台开发——微信授权登录(OAuth2.0)

    1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...

  2. [转] Android:微信授权登录与微信分享全解析

    https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...

  3. 微信授权登录(PHP)

    微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用 ...

  4. 【第二十一篇】手C# MVC 微信授权登录 OAuth2.0授权登录

    首先一定要熟读,最起码过一遍微信开发者文档 微信开发者文档 文档写的很清楚 授权登录四步走 在正文开始前,我得讲清楚一个事情 敲黑板,划重点:微信一共有两个 access_token 一个是7200就 ...

  5. .net core identity集成微信授权登录

    最快的方式是直接nuget安装AspNetCore.Authentication.WeChat包. 想要知道是如何实现的,可以看下面github上面的源码. 源码在这里:https://github. ...

  6. 微信授权登录mock(在没有真实微信账号的情况下测试大量微信账户授权登录的情况)

    场景介绍 对于构建在微信公众号的系统,帐号体系往往使用微信授权登录(如各类微信商城应用系统). 这样操作不仅可以实现静默注册,对用户几乎是无感的,同时也达到了区分用户,获取用户基本信息(头像,昵称等) ...

  7. wap2app(五)-- 微信授权登录以及踩过的坑

    应用场景是:用Hbuilder打包app,在app中点击微信授权登录或者某一操作,调起微信授权登录,用户授权后拿到用户信息. 一.登录插件配置 先配置微信登录参数 appid和appsecret,在m ...

  8. VUE开发SPA之微信授权登录

    SPA单页应用中微信授权登录的一点思路 单页应用应该如何解决微信授权登录的尴尬跳转?后退无法返回?主要遇到的问题就是 先进入单页应用,一边渲染页面一边判断用户有没有登录,当判断到没有登录时异步数据请求 ...

  9. Android接入微信SDK之一:发起微信授权登录

    1.重要的事情首先说! 包名.应用签名.app id 三者都必须和在腾讯上申请的一致!!!否则将不能成功. 包名:就是在腾讯上申请的包名 应用签名:使用微信官网提供的<签名生成工具>(这个 ...

  10. 微信授权登录,关于调不起授权页面,无法响应回调方法,获取不到code 详解

    前期准备工作:申请AppId,下载资源包jar.文档等. 微信授权登录步骤: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据c ...

随机推荐

  1. centos7yum下载安装报:软件包与预期下载的不符。建议:运行 yum --enablerepo=updates clean metadata尝试其他镜像

    centos7yum下载安装报:软件包与预期下载的不符.建议:运行 yum --enablerepo=updates clean metadata尝试其他镜像. rm -f /var/lib/rpm/ ...

  2. 使用pidstat查看进程资源使用情况

    简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...

  3. mysql线上负载高怎么排查

    作为一个开发人员或者数据库管理员,学会检查数据库运行情况是必不可少的工作.造成MySQL线程卡顿的原因有很多,但是无论是哪种原因,我们发现问题之后的第一要务就是解决问题,防止问题继续恶化.那么,应该如 ...

  4. Python开发【笔记】:concurrent.futures 平行运算

    平行运算 前言: 编写Python程序时,我们可能会遭遇性能问题,即使优化了代码,程序也依然有可能运行的很慢,从而无法满足我们对执行速度的要求,目前的计算机,其cpu核心数越来越多,于是,我们可以考虑 ...

  5. Android(十六 ) android 与蓝牙串口通讯

    1.得到蓝牙适配器 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 2.打开蓝牙 if (!mBl ...

  6. tobii SDK开发学习

    最近实验室用到tobii的眼动仪,从网上了解了下,tobii是瑞典的眼跟踪技术开发商,今年似乎有上市计划,不知道市值多少 买了仪器后试用了下,还算可以,将来配合人体设备开发,不过配套软件还需要花钱买. ...

  7. Spark SQL的整体实现逻辑

    1.sql语句的模块解析 当我们写一个查询语句时,一般包含三个部分,select部分,from数据源部分,where限制条件部分,这三部分的内容在sql中有专门的名称: 当我们写sql时,如上图所示, ...

  8. Django Rest Framework(2)-----序列化详解(serializers)

    REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSe ...

  9. 模块讲解----hashlib模块(加密)

    作用 用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 语法 import hashlib #md5 ...

  10. HttpClient发送get,post接口请求

    HttpClient发送get post接口请求/*  * post  * @param url POST地址 * @param data POST数据NameValuePair[] * @retur ...