微信接口獲取用戶信息

必須的參數:appid和appSecret
 
①獲取code
 
接口連接示例:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxbafc7fdf3664b600&redirect_uri=http%3a%2f%2f0708.pinzhi365.com%2findex_tb.html&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirecthtml

參數說明:
appid                服務號自帶的值,爲固定值
redirect_uri       回調的連接,在通過接口獲取到了code以後,頁面會跳轉到此參數對應的連接上,且域名必定要對應服務號所配置的域              名
                          且該連接必需要通過urlencode
response_type  固定值
scope                固定值:snsapi_userinfo或snsapi_base(不彈出受權頁面,只能獲取用戶openid)
state                  重定向後會帶上state參數,開發者能夠填寫a-zA-Z0-9的參數值,最多128字節
 
調用結果:
若是用戶贊成受權,頁面將跳轉至

http://0708.pinzhi365.com/index_tb.html?code=011bdbf34b5748203155ef831321b9af&state=STATEjava

------------------------------------------------------------------------------------------------------------
②經過code換取網頁access_token
 
接口連接示例:

https://api.weixin.qq.com/sns/oauth2/access_token?apache

 

appid=wxbafc7fdf3664b600&secret=81f9832f79e858b247aa6a2d09d66341&code=011bdbf34b5748203155ef831321b9af&grant_type=authorization_codejson

 
參數說明:
appid                 同①
secret                 服務號自帶,即appSecret,爲固定值
code                  從①獲取的值
grant_type         固定值
 
調用結果:
示例:
{
    "access_token": "OezXcEiiBSKSxW0eoylIeByO7M0QcUqqAnU8rzQAkrRdZmwxk9aQoDf5WT5aSvx6wBenI2Jmz_jBs-025_piaJ81bvZrb9Q1oEPOPZq7RMQRZT2sBN3-mk6siHEeXIN9WD1ybSIfoHaITDowh1AN8Q",
    "expires_in": 7200,
    "refresh_token": "OezXcEiiBSKSxW0eoylIeByO7M0QcUqqAnU8rzQAkrRdZmwxk9aQoDf5WT5aSvx695Vnx345AXlPPDt50Fbl0zfUI5eTGht57oMtwLx_aMyjYF3Juj4AVA_VX0hltk10WL47Z3_v6BnKCD_o9v2S5Q",
    "openid": "oAhzJs2lQRR6Dd1U95S1lrlMKjSE",
    "scope": "snsapi_userinfo",
    "unionid": "o_LdHt0WTwyrk41R2vcAs2v5XFQk"
}
------------------------------------------------------------------------------------------------------------
③經過access_token和openid獲取用戶信息
 
接口連接示例:
 

https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeByO7M0QcUqqAnU8rzQAkrRdZmwxk9aQoDf5WT5aSvx6wBenI2Jmz_jBs-025_piaJ81bvZrb9Q1oEPOPZq7RMQRZT2sBN3-mk6siHEeXIN9WD1ybSIfoHaITDowh1AN8Q&openid=oAhzJs2lQRR6Dd1U95S1lrlMKjSE&lang=zh_CNapi

 
參數說明:
access_token      由②所獲取
openid                由②所獲取
lang                    語言類型,爲固定值

調用結果:
示例:
{
    "openid": "oAhzJs2lQRR6Dd1U95S1lrlMKjSE",
    "nickname": "雨天發呆",
    "sex": 1,
    "language": "zh_CN",
    "city": "",
    "province": "",
    "country": "中國",
    "headimgurl": 

"http://wx.qlogo.cn/mmopen/TTQibyKjrickytMz9ZYicsibWECY84XyItRFZMp5kYv7vVyNxGMCkl1x1L6eOzGIT2ZGhApDx3n0jDfMy3aodO8PXQ/0",app

    "privilege": [],
    "unionid": "o_LdHt0WTwyrk41R2vcAs2v5XFQk"
}
------------------------------------------------------------------------------------------------------------
附:
JAVA發送http get請求的方法:
 
所必須的jar包:commons-httpclient-3.0.1.jar
 
 
import java.io.ByteArrayOutputStream;
import java.io.IOException;
 
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public static String sendGet(String url) {
  String newStr = "";
  // 構造HttpClient的實例
  HttpClient httpClient = new HttpClient();
  // 設置 Http 鏈接超時爲3秒
  httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
  // 建立GET方法實例
  GetMethod getMethod = new GetMethod(url);
  // 設置 get 請求超時爲 3秒
  getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 3000);
  // 使用系統提供的默認的恢復策略
  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    new DefaultHttpMethodRetryHandler());
  try {
   // 執行getMethod
   int statusCode = httpClient.executeMethod(getMethod);
   if (statusCode != HttpStatus.SC_OK) {
    System.err.println("Method failed: " + getMethod.getStatusLine());
   }
   // 讀取內容
   newStr = new String(getMethod.getResponseBodyAsString().getBytes("ISO8859-1"),"UTF-8").trim();
  } catch (HttpException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   // 釋放鏈接
   getMethod.releaseConnection();
  }
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
  System.out.println(newStr);
  return newStr;
  }
 
利用json-lib-2.3-jdk15.jar來解析json的方法
String openIdJson = "
{
    "access_token": "OezXcEiiBSKSxW0eoylIeByO7M0QcUqqAnU8rzQAkrRdZmwxk9aQoDf5WT5aSvx6wBenI2Jmz_jBs-025_piaJ81bvZrb9Q1oEPOPZq7RMQRZT2sBN3-mk6siHEeXIN9WD1ybSIfoHaITDowh1AN8Q",
    "expires_in": 7200,
    "refresh_token": "OezXcEiiBSKSxW0eoylIeByO7M0QcUqqAnU8rzQAkrRdZmwxk9aQoDf5WT5aSvx695Vnx345AXlPPDt50Fbl0zfUI5eTGht57oMtwLx_aMyjYF3Juj4AVA_VX0hltk10WL47Z3_v6BnKCD_o9v2S5Q",
    "openid": "oAhzJs2lQRR6Dd1U95S1lrlMKjSE",
    "scope": "snsapi_userinfo",
    "unionid": "o_LdHt0WTwyrk41R2vcAs2v5XFQk"
}
";
 
JSONObject jo = JSONObject.fromObject(openIdJson);
String openId = jsonObjectOpenId.getString("openid");
相關文章
相關標籤/搜索