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

Java微信公眾號(hào)開(kāi)發(fā)之通過(guò)微信公眾號(hào)獲取用戶信息

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

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

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

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

          

            

            

                             到此微信配置完畢,接下來(lái)就是直接上代碼了

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

      先說(shuō)第一種

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

    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ù)校驗(yàn)的判斷,我是按照來(lái)判斷的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ù)器校驗(yàn)
  @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方式請(qǐng)求  24      
      http.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
      http.setDoOutput(true); 
      http.setDoInput(true);
      System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//連接超時(shí)30秒28   
      System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //讀取超時(shí)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微信公眾號(hào)開(kāi)發(fā)之通過(guò)微信公眾號(hào)獲取用戶信息,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

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

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

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

    IDEA引MAVEN項(xiàng)目jar包依賴導(dǎo)入問(wèn)題解決方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

湖南省| 襄垣县| 丹凤县| 永胜县| 枣庄市| 巫溪县| 莫力| 宁远县| 万安县| 宣恩县| 东阿县| 阿鲁科尔沁旗| 自贡市| 东安县| 临邑县| 元谋县| 喜德县| 定安县| 哈尔滨市| 吉林市| 花莲市| 伊金霍洛旗| 化州市| 如东县| 英超| 镇沅| 镇宁| 桃园县| 彭阳县| 玉树县| 蒙自县| 盐边县| 南京市| 崇信县| 平昌县| 宁河县| 蓝山县| 凤城市| 天等县| 宁夏| 福清市|