• 微信公众号开发过程中要获取用户信息,需要通过OAuth2.0机制获得code,然后用code换取openID。 1、先确定自己的回调地址,下面拼接地址时需要用到,这里我用REDIRECT_URI代替。 2、拼接地址,如下,细心点看: ...

    微信公众号开发过程中要获取用户信息,需要通过OAuth2.0机制获得code,然后用code换取openID。

    1、先确定自己的回调地址,下面拼接地址时需要用到,这里我用REDIRECT_URI代替。

    2、拼接地址,如下,细心点看:

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    3、让用户主动点击访问这个地址。就像上面那种。

     

    4、微信会自动授权,通过授权后,会自动跳转并传输code参数过来。你只要在第一步的回调地址中接收这个code即可。

     

    PHP接收code例子:

    $code = $_GET["code"];


    接收到code。

    然后就是换取openID过程了。

    展开全文
  • 微信获取code,openid,授权,绑定用户,

    修改微信授权回调域名

    1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的开发者中心页配置授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加http://等协议头;

    授权回调域名配置规范为全域名

    2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

    第一步:用户同意授权,获取CODE

    参数是否必须说明
    appid公众号的唯一标识
    redirect_uri授权后重定向的回调链接地址,请使用urlencode对链接进行处理
    response_type返回类型,请填写code
    scope应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息
    state重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
    #wechat_redirect无论直接打开还是做页面302重定向时候,必须带此参数 

    注:回调链接一定要urlencode,不然识别不出


    第二步:通过code换取网页授权access_token

    首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

    请求方法

    获取code后,请求以下链接获取access_token: 
    https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code


    参数说明

    参数 是否必须 说明
    appid 公众号的唯一标识
    secret 公众号的appsecret
    code 填写第一步获取的code参数
    grant_type 填写为authorization_code

    返回说明
    
    

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

    {
       "access_token":"ACCESS_TOKEN",
       "expires_in":7200,
       "refresh_token":"REFRESH_TOKEN",
       "openid":"OPENID",
       "scope":"SCOPE",
       "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
    }
    

    参数描述
    access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
    expires_inaccess_token接口调用凭证超时时间,单位(秒)
    refresh_token用户刷新access_token
    openid用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
    scope用户授权的作用域,使用逗号(,)分隔
    unionid只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)


    	public static Authorize getAuthorize(String code){
    		Authorize authorize  = null;
    		try{
    		Token token = Token.getInstance();
    		HttpClient hc = new HttpClient();
    		Map<String, String> params = new HashMap<String, String>();
    		params.put("appid", token.getAppid());
    		params.put("secret", token.getSecret());
    		params.put("code", code);
    		params.put("grant_type", "authorization_code");
    		String url = "https://api.weixin.qq.com/sns/oauth2/access_token";
    		authorize =  hc.post(url, params, new JsonParser<Authorize>(Authorize.class));
    		} catch (Exception e) {
    			log.error("getOpenid erro message:" + e.getMessage(), e);
    		}
    		return authorize;
    	}
    	public class Authorize {
    		private String errcode;
    		private String errmsg;
    		private String access_token;
    		private String expires_in;
    		private String refresh_token;
    		private String openid;
    		private String scope;
    		// get set
    	}
    注:HttpClient 是被封住带工具类。我们获取openid,和相应带用户绑定,那么接下来就可以实现发送消息.

    展开全文
  • h5微信网页获取code

    2018-05-15 17:09:53
    网页开发时的微信授权,首先公司要开通一个公众号,然后需要配置相关的东西:微信网页授权:用于获取用户针对于公众号的唯一标识openid。但只能添加一个域名,通常把它设置为一级域名。网页授权回调域名,首先,在...

    这两天做微信分享的h5网页,需要微信授权登录,获取用户的相关信息。以前没有做过相关的项目,所以做得相当不顺利。网页开发时的微信授权,首先公司要开通一个公众号,然后需要配置相关的东西:

    1. 微信网页授权:用于获取用户针对于公众号的唯一标识openid。但只能添加一个域名,通常把它设置为一级域名。网页授权回调域名,首先,在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;其次,授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权;最后,如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可。
    2. JS接口安全域名:分享到朋友圈(js-sdk)时用上,此接口要求将当前的界面url加密后,才可以分享到朋友圈,需要调用微信分享功能的时候就需要配置这个域名。登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”,一般JS接口安全域名跟网页授权回调域名是一致的。
    3. 微信公众号对应的AppId和Screct等。

    在h5页面上获取code:

    var getRequest = this.getRequest();
    if (getRequest.code) {
    this.code = getRequest.code;
    } else {
    var pageUrl = window.location.href
    .replace(/[/]/g, "%2f")
    .replace(/[:]/g, "%3a")
    .replace(/[#]/g, "%23")
    .replace(/[&]/g, "%26")
    .replace(/[=]/g, "%3d");
    var url =
    "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
    "填写网页授权回调域名所对应的那个公众号的AppId" +
    "&redirect_uri=" +
    pageUrl + //这里放当前页面的地址
    "&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect";
    window.location.href = url;
    }
    console.log("CODE:" + getRequest.code);

    值得注意的是这里的pageUrl,即当前页面的地址一定要在我们配置的那个网页授权回调域名之下,而且这个页面最好不需要端口号,直接用纯域名或者纯域名加上项目文件夹名称就可访问,也就是说后台这个域名要设置一个默认的端口号。


    展开全文
  • 首先说一下code的获得,一般只需要读微信这公众号开发文档就OK,但是也有一个坑。 https://mp.weixin.qq.com/wiki 微信公众号开发文档 拿code是要在配置了appID,redirect_uri之后页面跳转回来的页面url上...

     

    https://mp.weixin.qq.com/wiki     微信公众号开发文档

     拿code是要在配置了appID,redirect_uri之后页面跳转回来的页面url上携带着code,需要截取。

    将公众号代码让布到了服务器上  可以看效果,微信开发者工具很不方便,

    getUrl() {
          let appID = "公众号的appId";
          let redirectUri = encodeURIComponent("这里是f跳转回来的页面");
          let strUrl =
            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
            appID +
            "&redirect_uri=" +
            redirectUri +
            "%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
    
          this.$nextTick(() => {
            window.location.href = strUrl;
          });
        },

    appId和response_type 是自己定义的参数

    跳回的页面的url 需要加encodeURIComponent()方法来处理

    截取code

    //截取code
        getCode() {
          let url = window.location.search;
          let start = window.location.search.indexOf("=");
          let end = window.location.search.indexOf("&");
          let code = url.substring(start + 1, end);
          return code;
        },

    拿到code之后去请求后端,后端会返回openId 也可以拿到用户的昵称 头像

     

    绑定手机号 另起页面 开通手机验证码服务

    拿到数据发送给后端验证

    getCode(formName){
                this.msg = '';
                const TIME_COUNT = 60;
                if (this.inputPhone) {
                     this.$http.post('这里是调取的后端接口名?phone='+ this.inputPhone, this.inputPhone)
                        .then(({ data }) => {
                            if(data.succeed) {
                                this.count = TIME_COUNT;
                                this.show = false;
                                this.btnShow = true;
                                this.timer = setInterval(() => {
                                if (this.count > 0 && this.count <= TIME_COUNT) {
                                    this.count--;
                                    } else {
                                    this.btnShow = false;
                                    this.show = true;
                                    clearInterval(this.timer);
                                    this.timer = null;
                                    }
                                }, 1000)
                            } else {
                                //展示错误信息给用户
                                let errINFO = document.getElementById('errInfo')
                                this.msg = data.msg
                                this.changeMsg()
                            }
                        })
                    
                } else {
                    this.msg = '请输入手机号'
                    this.changeMsg();
                }
            },
            //提交绑定
            submitInfo() {
               this.$http.post('这里是调取的后端接口名?phone='+ this.inputPhone +'&code='+ this.inputCode +'&openId='+ localStorage.getItem('openId'))
                .then(({ data }) => {
                    if(data.succeed) {
                        this.$router.push('/production?userOK')
                    } else {
                        this.msg = data.msg
                    }
                })
            }

    总结: 

    开发时需项目上线自动布项目,之后拿到域名跳域名测试,前端push代码,服务器自动布项目。这也是开发的不便。

     

    展开全文
  • 这里我总结了一下微信开发中从网页授权到获取到用户openid,nickname,headimgurl等信息。 微信开发手册 首先要在微信公众平台中配置好网页授权域名,建议设置为项目域名即可。 thinkPHP5的话建议在...

    在公众号开发中避免不了获取微信用户头像,昵称等登录信息。这里我总结了一下微信开发中从网页授权到获取到用户openid,nickname,headimgurl等信息。

    微信开发手册

    首先要在微信公众平台中配置好网页授权域名,建议设置为项目域名即可。

    这里写图片描述

    thinkPHP5的话建议在入口文档定义AppID和APPSecret,因为这两个参数会多次用到,如果以后有变更方便修改,也可在配置文件中定义。

    define('APPID', 'wx8fc535aaa112dfb3');
    define('SECRET', '97f96488de4911994dfc86f0e287a969');
    

    接下来获取code

    public function index()
        {
            //获取code
            $redirect_uri = urlencode('http://www.XXX.com/index/index/getAccesstoken');
            header('Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.APPID.'&redirect_uri='.$redirect_uri.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect');
            exit;
    
        }
    

    使用**urlencode()**函数来对回调地址进行加密,回调地址的域名和网页授权域名一致就好,回调地址控制器方法应为接下来获取access_token和openID的控制器和方法。

    public function getAccesstoken(){
            //得到openID
            $code = $_GET['code'];
            //获取access_token值
            $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.APPID.'&secret='.SECRET.'&code='.$code.'&grant_type=authorization_code'; 
            $data = json_decode(httpRequest($get_token_url),true); 
            // 得到用户信息
            $get_user_info = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$data["access_token"].'&openid='.$data["openid"].'&lang=zh_CN';
            $userinfo = json_decode(httpRequest($get_user_info),true); 
            var_dump($userinfo);
            // var_dump($data);
        }
    

    通过回调链接,会将携带code的返回值返回到该方法中,发送获取access_token的请求,得到access_token,这里的access_token仅限于获取用户信息,具体建议查看手册。

    拿到access_token和openID后发送获取用户信息的请求,得到的$userinfo就是包含用户昵称,性别,头像等信息的数组(通过json_decode将json格式转为数组,微信返回为json格式)。

    这里的httpRequest()方法为发送curl请求的一个方法,如下:

    function httpRequest($url, $postData=array()){
            // (1)初始化
            $ch = curl_init();
            // (2)设置选项
            // 设置请求的url
            curl_setopt($ch, CURLOPT_URL, $url);
            // 将curl_exec()获取的数据以字符串返回,而不是直接输出。
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
            if(!empty($postData)){
                // 设置请求方式为post
                curl_setopt($ch, CURLOPT_POST, true);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
            }
            //curl注意事项,如果发送的请求是https,必须要禁止服务器端校检SSL证书
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
            // (3)执行
            $result = curl_exec($ch); 
            // (4)关闭
            curl_close($ch);
            return $result;
    }
    
    展开全文
  • 微信网页授权,获取微信code获取access tocken 获取用户信息
  • 微信H5授权获取code,拿取用户信息 ##如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 这是微信给的说明文档,但实际上,我们首先要做的是去微信...
  • 微信开发中,经常有这样的需求:获得用户头像、绑定微信号给用户发信息.. 那么实现这些的前提就是授权! 1.配置安全回调域名: 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口...
  • 微信开发中,通常要获取点击链接的用户的open_id通常需要这几步。 1、获取code的url,重定向。获取code。 static public function getURL(array $params) { $wx_id = $params['wx_id']; $domain = self::...
  • 除此之外,我们还需要一个内网穿透的工具在开发环境下让微信能访问到我们的域名。我使用的是natapp。此类工具网上有很多,大家可以自行寻找。 这里我们使用微信提供的测试账号来作为演示 二、开始开发 内网穿透就...
  • 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 现在,我们要实现一个微信内网页,通过微信访问网页时,网页会展示微信用户的个人信息。因为涉及...
  • 项目中遇到一个需要微信获取code支付,其中遇到很多问题,现在做一下总结。 一、进入页面获取code: 二、截取code: 随后,我们需要获取code的该页面地址链接就会变成: ...
  • 今天微信开发前段需要发送url获取用户code,然后在得到openId,沃采用得方式是两个 一样得页面,回掉地址是第二个页面,不知道还有没有其他方式,在线等。。。
  • 官网链接 参考链接 1、把下面的URL补充完整:(大写代表需要补充的内容) ...amp;...redirect_uri=REDIRECT_URI&...response_type=code&amp;amp;scope=SCOPE&amp;amp;state=STATE#wechat_r...
  • 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
  • function urlResolve () { ... //获取url中"?"符后的字符串 var theRequest = new Object(); //声明一个对象 if(url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&");...
  • <template> <div class="icontent"> <template v-if="token"> <div>登录成功!</div> </template> <template> <div>登录中...</...
  • 微信公众号的项目中难免会用到支付,用到支付后就必须前端拿到code后去换区openid,在微信公众号中获取授权的有两种方式,一种是静默授权,一种是非静默的授权,具体移步微信公众号开发文档 let origin = ...
  • 微信开发时候在做消息接口交互的时候需要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID,接收事件推送方式和网页授权获取用户基本信息方式获取
  • 在公众号开发中一定要获取用户的openid信息,按照微信的文档来就好了。测试没有问题上线后,部分安卓手机会出现无法打开网页的现象。 问题跟踪 通过系统日志发现诡异现象,redirect_uri会被回调n次,而且每次的code...
1 2 3 4 5 ... 20
收藏数 49,518
精华内容 19,807