最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java微信公眾號開發(fā)之通過微信公眾號獲取用戶信息

 更新時間:2017年05月18日 15:16:44   作者:南=子  
這篇文章主要介紹了Java微信公眾號開發(fā)之通過微信公眾號獲取用戶信息,需要的朋友可以參考下

最近由于公司業(yè)務(wù),就開始研究微信開發(fā)的流程,說實話,這東西剛開始看到時候和看天書的一樣,總算,看了一天的文檔,測試代碼終于出來了。

1、首先需要到微信網(wǎng)站去設(shè)置一下,我是直接用的微信測試號。

        接口配置信息必須要填寫的,所以說必須能將自己的服務(wù)發(fā)布出去

          

            

            

                             到此微信配置完畢,接下來就是直接上代碼了

2、獲取用戶信息的方式一共是兩種,前提都是用戶關(guān)注微信公眾號,一種是靜默獲取(snsapi_base,這種方式只能獲取openid),另一種是授權(quán)獲取(snsapi_userinfo,可以獲取用戶的詳細(xì)信息)。

      先說第一種

  (1)首先需要先訪問微信的鏈接

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxxxx&redirect_uri=http://xxxxxx/open/openid&response_type=code&scope=snsapi_base

           這里的 uri就是直接回掉我們的服務(wù)地址,一定要記住,服務(wù)校驗的判斷,我是按照來判斷的echostr(第二種方式也是這樣)

package net.itraf.controller;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
@Controller
@RequestMapping("/open")
public class OpenController {
  @RequestMapping("/toOpenId")
  public @ResponseBody String getOpenId(String code,String echostr,HttpServletResponse res) throws IOException{
    if(echostr==null){
      String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx24d47d2080f54c5b&secret=95011ac70909e8cca2786217dd80ee3f&code="+code+"&grant_type=authorization_code";
      System.out.println(code);
      String openId="";
      try {
        URL getUrl=new URL(url);
        HttpURLConnection http=(HttpURLConnection)getUrl.openConnection();
        http.setRequestMethod("GET"); 
        http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        http.setDoOutput(true);
        http.setDoInput(true);
        http.connect();
        InputStream is = http.getInputStream(); 
        int size = is.available(); 
        byte[] b = new byte[size];
        is.read(b);
        String message = new String(b, "UTF-8");
        JSONObject json = JSONObject.parseObject(message);
        openId = json.getString("openid");
        } catch (MalformedURLException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      return openId;
    }else{
      PrintWriter out = res.getWriter();
      out.print(echostr);
      return null;
    }
  }
  //做服務(wù)器校驗
  @RequestMapping("/tovalid")
  public void valid(String echostr,HttpServletResponse res) throws IOException{
    PrintWriter out = res.getWriter();
    out.print(echostr);
  }
}

第二種

    (1)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxx&redirect_uri=http:// 域名

/open/openid&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect

package net.itraf.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/weixin")
public class Oauth2Action {
  @RequestMapping("/oauth")
  public void auth(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    String echostr = request.getParameter("echostr");
    if(echostr==null){
      String appId = "wx24d47d2080f54c5b";
      String appSecret = "95011ac70909e8cca2786217dd80ee3f";
      //拼接
      String get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?"
          + "appid="
          + appId
          + "&secret="
          + appSecret
          + "&code=CODE&grant_type=authorization_code";
      String get_userinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
      request.setCharacterEncoding("UTF-8");
      response.setCharacterEncoding("UTF-8");
      String code = request.getParameter("code");
      System.out.println("******************code=" + code);
      get_access_token_url = get_access_token_url.replace("CODE", code);
      String json = HttpsGetUtil.doHttpsGetJson(get_access_token_url);
      JSONObject jsonObject = JSONObject.fromObject(json);
      String access_token = jsonObject.getString("access_token");
      String openid = jsonObject.getString("openid");
      get_userinfo = get_userinfo.replace("ACCESS_TOKEN", access_token);
      get_userinfo = get_userinfo.replace("OPENID", openid);
      String userInfoJson = HttpsGetUtil.doHttpsGetJson(get_userinfo);
      JSONObject userInfoJO = JSONObject.fromObject(userInfoJson);
      String user_openid = userInfoJO.getString("openid");
      String user_nickname = userInfoJO.getString("nickname");
      String user_sex = userInfoJO.getString("sex");
      String user_province = userInfoJO.getString("province");
      String user_city = userInfoJO.getString("city");
      String user_country = userInfoJO.getString("country");
      String user_headimgurl = userInfoJO.getString("headimgurl");
      response.setContentType("text/html; charset=utf-8");
      PrintWriter out = response.getWriter();
      out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
      out.println("<HTML>");
      out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
      out.println(" <BODY>");
      out.print(" This is ");
      out.print(this.getClass());
      out.println(", using the POST method \n");
      out.println("openid:" + user_openid + "\n\n");
      out.println("nickname:" + user_nickname + "\n\n");
      out.println("sex:" + user_sex + "\n\n");
      out.println("province:" + user_province + "\n\n");
      out.println("city:" + user_city + "\n\n");
      out.println("country:" + user_country + "\n\n");
      out.println("<img src=/" + user_headimgurl + "/");
      out.println(">");
      out.println(" </BODY>");
      out.println("</HTML>");
      out.flush();
      out.close();
    }else{
      PrintWriter out = response.getWriter();
      out.print(echostr);
    }
  }
}
package net.itraf.controller;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpsGetUtil {
  public static String doHttpsGetJson(String Url)
  {
    String message = "";
    try
    {
      System.out.println("doHttpsGetJson");//TODO:dd
      URL urlGet = new URL(Url);
      HttpURLConnection http = (HttpURLConnection) urlGet.openConnection(); 
      http.setRequestMethod("GET");   //必須是get方式請求  24      
      http.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
      http.setDoOutput(true); 
      http.setDoInput(true);
      System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//連接超時30秒28   
      System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //讀取超時30秒29 30    
      http.connect();
      InputStream is =http.getInputStream();
      int size =is.available();
      byte[] jsonBytes =new byte[size];
      is.read(jsonBytes);
      message=new String(jsonBytes,"UTF-8");
    } 
    catch (MalformedURLException e)
    {
       e.printStackTrace();
     }
    catch (IOException e)
     {
       e.printStackTrace();
     } 
    return message;
  }
}

以上所述是小編給大家介紹的Java微信公眾號開發(fā)之通過微信公眾號獲取用戶信息,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • springboot使用kafka事務(wù)的示例代碼

    springboot使用kafka事務(wù)的示例代碼

    Kafka?同數(shù)據(jù)庫一樣支持事務(wù),當(dāng)發(fā)生異常的時候可以進(jìn)行回滾,確保消息監(jiān)聽器不會接收到一些錯誤的或者不需要的消息,本文就來介紹一下springboot使用kafka事務(wù)的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • IDEA引MAVEN項目jar包依賴導(dǎo)入問題解決方法

    IDEA引MAVEN項目jar包依賴導(dǎo)入問題解決方法

    這篇文章主要介紹了IDEA引MAVEN項目jar包依賴導(dǎo)入問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • springmvc請求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù))

    springmvc請求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù))

    這篇文章主要介紹了springmvc請求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • JVM內(nèi)存結(jié)構(gòu)劃分實例解析

    JVM內(nèi)存結(jié)構(gòu)劃分實例解析

    這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)劃分實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot Maven打包插件spring-boot-maven-plugin無法解析原因

    SpringBoot Maven打包插件spring-boot-maven-plugin無法解析原因

    spring-boot-maven-plugin是spring boot提供的maven打包插件,本文主要介紹了SpringBoot Maven打包插件spring-boot-maven-plugin無法解析原因,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 基于RabbitMQ的簡單應(yīng)用(詳解)

    基于RabbitMQ的簡單應(yīng)用(詳解)

    下面小編就為大家分享一篇基于RabbitMQ的簡單應(yīng)用(詳解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • java int轉(zhuǎn)byte和long轉(zhuǎn)byte的方法

    java int轉(zhuǎn)byte和long轉(zhuǎn)byte的方法

    下面小編就為大家?guī)硪黄猨ava int轉(zhuǎn)byte和long轉(zhuǎn)byte的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 15道非常經(jīng)典的Java面試題 附詳細(xì)答案

    15道非常經(jīng)典的Java面試題 附詳細(xì)答案

    這篇文章主要為大家推薦了15道非常經(jīng)典的Java面試題,附詳細(xì)答案,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • SpringBoot接受前臺參數(shù)的6種方式以及統(tǒng)一響應(yīng)代碼示例

    SpringBoot接受前臺參數(shù)的6種方式以及統(tǒng)一響應(yīng)代碼示例

    這篇文章主要給大家介紹了關(guān)于SpringBoot接受前臺參數(shù)的6種方式以及統(tǒng)一響應(yīng)的相關(guān)資料,前端負(fù)責(zé)展示頁面和用戶交互,而后端則負(fù)責(zé)處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲,在這種架構(gòu)下前端需要將用戶輸入的數(shù)據(jù)發(fā)送給后端進(jìn)行處理,需要的朋友可以參考下
    2023-12-12
  • Springboot中yml文件不生效原因分析及解決方案

    Springboot中yml文件不生效原因分析及解決方案

    本文介紹了SpringBoot項目中YML文件不生效的常見原因及解決方案,包括格式錯誤、文件名錯誤、配置文件位置、激活的Profile、yml文件未加載、依賴問題、環(huán)境變量覆蓋和代碼中的硬編碼配置,通過以下步驟,可以解決大部分YML文件配置不生效的問題
    2024-11-11

最新評論

无极县| 将乐县| 丽水市| 拜泉县| 长寿区| 云龙县| 思茅市| 平凉市| 射阳县| 永春县| 集贤县| 临猗县| 凤翔县| 平武县| 长乐市| 宣武区| 宜君县| 利津县| 徐州市| 叶城县| 西华县| 博爱县| 福建省| 张北县| 武胜县| 广丰县| 梁山县| 柳林县| 临高县| 娄烦县| 虹口区| 新龙县| 泾阳县| 诏安县| 玉树县| 莲花县| 阳城县| 上栗县| 福安市| 泰安市| 无为县|