微信开放平台—-微信扫码登录

微信开放平台—-微信扫码登录告知:所有操作是基于域名已备案,并且具有企业级微信公众号!1.准备工作   1.1.注册微信开放平台帐号       https://open.weixin.qq.com   1.2.创建应用(网站应用),填写资料https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createWeb&type=…

大家好,又见面了,我是你们的朋友全栈君。

告知:所有操作是基于域名已备案,并且具有企业级微信公众号!

1.准备工作

     1.1.注册微信开放平台帐号

             https://open.weixin.qq.com

     1.2.创建应用(网站应用),填写资料

https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createWeb&type=app&lang=zh_CN&token=f95883efa2cf7187c7b020d3cd26a53e89b4dc91

         注意: 

                  !填写的域名与备案号必须一致. 

                 !!授权回调域名必须与微信公共号的授权域名一致

                       微信开放平台:

                    微信开放平台----微信扫码登录

                       微信公共平台:  权限接口(修改) —>  设置  —-> 填写域名  !需要将xxx.txt文件上传到服务器根目录

                        微信开放平台----微信扫码登录

                    微信开放平台----微信扫码登录

               !!!整个微信开放平台填写信息的最好是一致的,比如说域名,联系人邮箱,

     1.3.申请成为开发者(不申请,没有权限调用微信扫码登录接口)

                1.3.1.申请开通

                微信开放平台----微信扫码登录

               1.3.2.填写资料

                         !保证资料真实就OK了

               1.3.3.拿命来!,….哦不,是交钱,300大洋

2.微信扫码登录流程 图(自己画的…)

                     可以去看官网啦,这里自己的理解,还有个问题,这个二维码对于用户来说是一个请求到我们服务器,然后我们服务器就 会返回一个二维码给他,但是对于开发人员就不是了,这里不要给我误带了,看看官网就知道了.

              微信开放平台----微信扫码登录

3.实现

       首先,前端肯定是有一个请求到后台的,这个请求就是用于获取微信登录二维码的.

       3.1.1.前端请求

               例如:<a href=”/wexinlogin/xxx”>微信登录</a>,当然,后台肯定是要进行映射的.

       3.2.1.组装URL,发送请求到微信

                 3.2.1.1.怎么组装?

                      https://open.weixin.qq.com/connect/qrconnect?appid=自己的APPID&redirect_uri=回调&response_type=code&scope=按情况填写&state=随机数#wechat_redirect

                              !这个是服务器向微信开放平台发送的,目的就是返回二维码,供用户扫.

                 3.2.1.2.怎么发,拿什么发?

                               居然是在服务器上向其它网络获取资源,那么必定就是HttpClient(原谅我见识短,大家补充…)

                             

package weixinlogin;

import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/***
* 微信扫码登录:工具类
*/
public class wexinUtils {

    //参数
    public static final String APPID = “”;
    public static final String APPSECRETID = “”;
    //回调地址
    public static final String CALLBACK = “”;

    /***
     *
     * @param url :  组装发送请求的URL
     * @return
     * 该方法用于发送请求到微信开放平台,将返回值转化为json
     */
    public static JSONObject getjson(String url) throws IOException {

        //初始化JSONObject
        JSONObject jsonObject = null;

        //初始化HttpClient(该对象用于在服务器内部发送请求)
        DefaultHttpClient client = new DefaultHttpClient();

        //GET请求
        HttpGet httpGet = new HttpGet(url);

        //发送请求
        HttpResponse response =  client.execute(httpGet);

        //获取返回结果
        HttpEntity entity  = response.getEntity();

        //内容不为null
        if(entity!=null){

            //转化字符为为JSON
            String result = EntityUtils.toString(entity,”UTF-8″);
            //转化为Json
            jsonObject =  jsonObject.fromObject(result);
        }
        //释放
        httpGet.releaseConnection();
     return jsonObject;
    }

}

    !这里回调地址,跟之前审核的哪个没有一点关系,这个URL是服务器真实存在的,并且能够访问得该资源.而哪个只是一个字符串,没有太多的作用(这是我的看法啦…,真实的希望各位大佬解释一下啦…)

       3.3.1. 回调数据怎么获取?     

                经历上次请求后,如果用户选择了登录授权,那么微信开放平台就会将请求发到之前我们指定的URL去.这个时候就会有CODE返回了,通过这个Code与AppID\SecretID获取Access_token,就可以获取到OPENID,这个OPENID就是微信用户唯一标识,通过这个标识,我们又可以组装URL,进而获取当前微信用户信息.   

               

package weixinlogin;

import io.cite.CiteRuntime;
import io.cite.plugin.cookie.cookie;
import io.cite.plugin.database.db;
import net.sf.json.JSONObject;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Map;

/***
 *  微信登录成功回调,获取access_token
 */
public class weixincallback {

    public void execute(CiteRuntime runtime) throws IOException, SQLException {

        //请求,响应对象
        HttpServletRequest request = runtime.getRequest();
        HttpServletResponse response = runtime.getResponse();

        //获取Code
        String Code = request.getParameter("code");

        //通过Code/AppID/SecretID获取access_token
        String url  ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wexinUtils.APPID +
                "&secret=" + wexinUtils.APPSECRETID +
                "&code=" + Code +
                "&grant_type=authorization_code";

        //发送请求获取access_token
        JSONObject jsonobject =  wexinUtils.getjson(url);


        //微信登录用户标识(用于处理业务)
        String openid = jsonobject.getString("openid");

        //获取access_token
        String access_token = jsonobject.getString("access_token");


        //组装获取用户信息URL
        String userinfor  ="https://api.weixin.qq.com/sns/userinfo/access_token?appid=" + access_token + "&openid="+ openid
                            + "&lang=zh_CN";

        //发送请求,获取用户信息
        JSONObject userinforobj = wexinUtils.getjson(userinfor);

        //业务处理...

    }
}

最终结果:微信开放平台----微信扫码登录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132105.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 语音信号处理入门系列(1)—— 语音信号处理概念「建议收藏」

    语音信号处理入门系列(1)—— 语音信号处理概念「建议收藏」文章目录1.语音交互2.复杂的声学环境2.1声学回声消除2.2解混响2.3语音分离2.4波束形成2.5噪声抑制2.6幅度控制2.7前端信号处理的技术路线3.参考4.推荐开源项目原博客地址:https://www.cnblogs.com/LXP-Never/p/13620804.html1.语音交互你知道苹果手机有几个麦克风吗?语音交互(VUI)是指人与人/设备通过自然语音进行信息传递的过程。语音交互的优势:输入效率高。语音输入的速度是传统键盘输入方式的3倍以上。例如:语

    2022年5月18日
    49
  • Redis集群搭建

    Redis集群搭建

    2021年6月15日
    109
  • 运维标准化工作流程

    运维标准化工作流程运维标准化工作流程:http://wenku.baidu.com/link?url=bt1ZVijjS35mSSMoDbs4rgWtrG0zBY8a-zuIKPfi5TGehD6XHD8RzscniHsOtODaKkqCG7ba5DeUHLS6sqes03JdEdOYEK1OPviwsl9wv0_ 转载于:https://blog.51cto.com/jackysz…

    2022年5月26日
    37
  • import win32api 找不到指定程序_win32api python

    import win32api 找不到指定程序_win32api python环境描述:使用环境是win7+Python3.4,32位,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/问题1:终端输入importwin32api后,总是报错,错误如下:问题1解决:使用的python-3.4是32位的,win7系统是64位的,在下载pywin32时…

    2022年10月10日
    0
  • 大话数据结构PDF/word

    大话数据结构PDF/word《大话数据结构》PDF版本链接:https://pan.baidu.com/s/1nfaEZBBEi-3-mTX7A4qfbA提取码:30kyword版本链接:https://pan.baidu.com/s/18hpIqQYy4wiVUAoBabqZ-A提取码:e4ja

    2022年6月24日
    39
  • git 自己搭建服务器_github搭建服务器

    git 自己搭建服务器_github搭建服务器1.环境:git服务器:CentOS-7.6-x86 本地客户端:window102.软件安装yuminstallgit-y3.创建一个操作系统用户git,设置密码,并为其建立一个.ssh目录。addusergitpasswdgitchmod755/home/gitsugitcdmkdir.ssh&&chmod700.sshtouch.ssh/authorized_keys&&chmod600…

    2022年10月5日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号