zoukankan      html  css  js  c++  java
  • 微信授权登录

    没有公众号高级接口权限可以先用微信公众平台接口测试账号

    公众测试账号

    1,登录后,填写回调域名

    2,引导用户点击授权链接

    微信授权开发文档详细说明地址

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


     1 //授权成功回调域名获取code
     2     public void oauthProsperity(Controller con){
     3         //用户授权获取的code
     4         String appId = PropKit.get("appId");
     5         String appsecret = PropKit.get("appsecret");
     6         String code = con.getPara("code");
     7         HttpClientBuilder.create().build();
     8         if(code!=null && code.trim()!=""){
     9             TokenModel token = HttpClientUtil.getOauth2AccessToken(appId, appsecret, code);
    10             WeixinUserModel userInfo = HttpClientUtil.getUserInfo(token.getStr("accessToken"), token.getStr("openId"));
    11             con.renderJson(userInfo.toJson());
    12             return;
    13         }
    14         con.renderJson();
    15     }
    
    
    /**
         * 通过code换取网页授权access_token,
         * @param appId  公众号的唯一标识
         * @param appsecret  公众号的appsecret
         * @param code   
         * @return
         */
        public static TokenModel getOauth2AccessToken(String appId,String appsecret,String code){
            TokenModel token = null;//map
            String url = "https://api.weixin.qq.com/sns/oauth2/access_token";
            Map<String,String> params = new HashMap<String,String>();
            params.put("appId", appId);
            params.put("secret", appsecret);
            params.put("code", code);
            params.put("grant_type", "authorization_code");
            JSONObject json = HttpClientUtil.httpPost(url, params);
            if(json!=null){
                    token = new TokenModel();
                    token.set("openId", json.getString("openid"));
                    token.set("scope", json.getString("scope"));
                    token.set("accessToken", json.getString("access_token"));
                    token.set("expiresIn", json.getInt("expires_in"));
                    token.set("refreshToken", json.getString("refresh_token"));
                    token.save();
            }
            return token;
        }
     1 /**
     2      * 拉取用户信息
     3      * @param accessToken   网页授权接口调用凭证
     4      * @param openId
     5      * @return
     6      */
     7     public static WeixinUserModel getUserInfo(String accessToken,String openId){
     8         WeixinUserModel model = null;//map
     9         String url = "https://api.weixin.qq.com/sns/userinfo";
    10         Map<String,String> map = new HashMap<String,String>();
    11         map.put("ACCESS_TOKEN", accessToken);
    12         map.put("OPENID", openId);
    13         JSONObject json = HttpClientUtil.httpPost(url, map);
    14         if(null!=json){
    15             model = new WeixinUserModel();
    16             model.set("id", json.getString("openid"));
    17             model.set("subscribe", 1);
    18             model.set("nickname", json.getString("nickname"));
    19             model.set("sex", json.getInt("sex"));
    20             model.set("province", json.getString("province"));
    21             model.set("city", json.getString("city"));
    22             model.set("country", json.getString("country"));
    23             model.set("headimgurl", json.getString("headimgurl"));
    24             //model.set("unionId", json.getString("unionid"));
    25             model.save();
    26         }
    27         return model;
    28     }
     1 package com.rollDice.util;
     2 
     3 import java.util.ArrayList;
     4 import java.util.HashMap;
     5 import java.util.List;
     6 import java.util.Map;
     7 
     8 import org.apache.http.HttpEntity;
     9 import org.apache.http.HttpStatus;
    10 import org.apache.http.NameValuePair;
    11 import org.apache.http.client.entity.UrlEncodedFormEntity;
    12 import org.apache.http.client.methods.CloseableHttpResponse;
    13 import org.apache.http.client.methods.HttpPost;
    14 import org.apache.http.impl.client.CloseableHttpClient;
    15 import org.apache.http.impl.client.HttpClientBuilder;
    16 import org.apache.http.message.BasicNameValuePair;
    17 import org.apache.http.util.EntityUtils;
    18 
    19 import com.rollDice.model.TokenModel;
    20 import com.rollDice.model.WeixinUserModel;
    21 
    22 import net.sf.json.JSONObject;
    23 
    24 public class HttpClientUtil {
    25     public static CloseableHttpClient createDefault(){
    26         return HttpClientBuilder.create().build();
    27     }
    28     /**
    29      * 发送post请求
    30      * @param url   链接
    31      * @param params  参数
    32      * @return
    33      */
    34     public static JSONObject httpPost(String url,Map<String,String> params){
    35         CloseableHttpClient httpClient = createDefault();
    36         HttpPost method = new HttpPost(url);
    37         //拼接参数
    38         List<NameValuePair> list = new ArrayList<NameValuePair>();
    39         if(params!=null){
    40             for(Map.Entry<String, String> entry : params.entrySet()){
    41                 String key = entry.getKey().toString();
    42                 String value = entry.getValue().toString();
    43                 NameValuePair pair = new BasicNameValuePair(key,value);
    44                 list.add(pair);
    45             }
    46         }
    47         CloseableHttpResponse response = null;
    48         try{
    49             method.setEntity(new UrlEncodedFormEntity(list));
    50             response = httpClient.execute(method);
    51         }catch(Exception e){
    52             e.printStackTrace();
    53         }
    54         //请求成功,得到响应
    55         JSONObject jsonObject = null;
    56         if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
    57             HttpEntity httpEntity = response.getEntity();
    58             String result = null;
    59             try{
    60                 result = EntityUtils.toString(httpEntity);
    61             }catch(Exception e){
    62                 e.printStackTrace();
    63             }
    64             //返回json格式
    65             jsonObject = JSONObject.fromObject(result);
    66         }
    67         return jsonObject;
    68     }

    http和JSONObject相关jar下载



  • 相关阅读:
    作业2 对称密钥密码系统安全性分析(B班同学评论)
    作业1 你如何看待信息安全问题影响(B班同学评论)
    作业1 你如何看待信息安全问题影响(A班同学评论)
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/suruozhong/p/6293780.html
Copyright © 2011-2022 走看看