微信小程序之java服務端獲取openid


微信小程序越來越熱,最近團隊寫了一個小程序,這篇博客我將講一下怎么通過java服務端獲取到用戶的openid。

api文檔的授權登陸地址:

http://developers.weixin.qq.com/miniprogram/dev/api/api-login.html

首先我們看下小程序官方的api文檔的一張圖:

  

 

 

我把我們服務端的部分用紅框框起來了。

圖的意思就是前台小程序通過wx.login()這個接口獲取了一個code。

前台把code連同appid和secret請求發給服務端,服務端接收后通過訪問微信接口服務從而獲取到openid和session_key。

 

我們繼續看:

 

 

從圖看出,接口地址即為上面說的服務端訪問地址。

請求的參數有四個。

appid和secret開發者可以通過微信公眾平台->設置->開發設置,從而找出appid和secret。

js_code就是上面說的前台通過調用wx.login()獲得一個code。

grant_type默認為authorization_code。

訪問后接口地址將返回json字符串,里面攜帶着openid和seesion_key。

下面通過代碼來演示:
寫一個訪問工具類:

package utils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class getOpenIdutil {

public String getopenid(String appid,String code,String secret) {
BufferedReader in = null;
//appid和secret是開發者分別是小程序ID和小程序密鑰,開發者通過微信公眾平台-》設置-》開發設置就可以直接獲取,
String url="https://api.weixin.qq.com/sns/jscode2session?appid="
+appid+"&secret="+secret+"&js_code="+code+"&grant_type=authorization_code";
try {
URL weChatUrl = new URL(url);
// 打開和URL之間的連接
URLConnection connection = weChatUrl.openConnection();
// 設置通用的請求屬性
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 建立實際的連接
connection.connect();
// 定義 BufferedReader輸入流來讀取URL的響應
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (Exception 1) {
throw new RuntimeException(e1);
}
// 使用finally塊來關閉輸入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
前台發送請求,攜帶着appid、secret和code,服務端調用我寫的這個工具類傳入三個參數,我采用了拼接的方法把傳過來的三個參數連同grant_type拼接成一段url。

調用java.net.url->new一個url->調java.net.URLConnection打開連接發送參數->讀取相應->獲取json字符串返回。

調用代碼,返回json字符串,用導JSONObject包,解析json串:

getOpenIdutil getopenid=new getOpenIdutil();
//調用訪問微信服務器工具方法,傳入三個參數獲取帶有openid、session_key的json字符串
String jsonId=getopenid.getopenid(appid,code,secret);
JSONObject jsonObject = JSONObject.fromObject(jsonId);
//從json字符串獲取openid和session_key
String openid=jsonObject.getString("openid");
String session_key=jsonObject.getString("session_key");
至此,已獲取到openid。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM