日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

微信公众平台--服务号/订阅号--网页授权获取用户基本信息

發布時間:2023/12/13 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 微信公众平台--服务号/订阅号--网页授权获取用户基本信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方Api文檔:

http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

說的很清楚,可以仔細看看。

1.登錄微信公眾平臺

https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=42879889&lang=zh_CN

2.點擊開發者中心

點擊修改

填寫授權回調頁面域名,我寫的是我本機的局域網IP地址

然后點擊確定。

3.誘導用戶微信打開授權頁面:

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

用戶會看到如下類似頁面:

如果用戶同意授權,頁面將跳轉至 redirect_uri/?code=CODE&state=STATE。若用戶禁止授權,則重定向后不會帶上code參數,僅會帶上state參數redirect_uri?state=STATE

code說明 :
code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code只能使用一次,5分鐘未被使用自動過期。

4.通過code獲取網頁授權access_token

在上一步獲取code后,請求以下鏈接獲取access_token: 
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
參數 是否必須 說明
appid 公眾號的唯一標識
secret 公眾號的appsecret
code 填寫第一步獲取的code參數
grant_type 填寫為authorization_code

返回說明

正確時返回的JSON數據包如下:

{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE"
}


參數 描述
access_token 網頁授權接口調用憑證,注意:此access_token與基礎支持的access_token不同
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 用戶唯一標識,請注意,在未關注公眾號時,用戶訪問公眾號的網頁,也會產生一個用戶和公眾號唯一的OpenID
scope 用戶授權的作用域,使用逗號(,)分隔

5.拉取用戶信息

如果網頁授權作用域為snsapi_userinfo,則此時開發者可以通過access_token和openid拉取用戶信息了。

請求方法

http:GET(請使用https協議)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

參數說明

參數 描述
access_token 網頁授權接口調用憑證,注意:此access_token與基礎支持的access_token不同
openid 用戶的唯一標識
lang 返回國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語

返回說明

正確時返回的JSON數據包如下:

{
   "openid":" OPENID",
   " nickname": NICKNAME,
   "sex":"1",
   "province":"PROVINCE"
   "city":"CITY",
   "country":"COUNTRY",
    "headimgurl":    "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", 
        "privilege":[
        "PRIVILEGE1"
        "PRIVILEGE2"
    ]
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

后端簡單代碼如下:

    /**
* 獲取微信登錄用戶信息
* @param code
* @param request
* @param response
* @throws IOException
* @throws ServletException
*/
@RequestMapping(value= "vote/getCode")
public void getCode(String code,HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
System. out.println(code);
//https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXX&redirect_uri=http://192.168.246.172/business/vote/getCode.do&response_type=code&scope=snsapi_userinfo &state=STATE#wechat_redirect
//格式https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
//1.通過code換取網頁授權access_token的URL連接
tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +WeixinConf.AppID+"&secret="+WeixinConf. AppSecret+ "&code="+code+ "&grant_type=authorization_code";
//System.out.println("拼接后的token連接:" + tokenUrl);
//獲取access_token
token = WebUtils. getUrlReturnData(tokenUrl);
access_token = token.substring( token.indexOf( "":"") + 3 , token.indexOf( "",""));
openId = token.substring( token.indexOf( "openid":"")+9,token .indexOf("","scope"" ));
//2.獲取用戶信息 請求格式:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN String userUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" +access_token +"&openid=" +openId +"&lang=zh_CN" ;
String userInfo = WebUtils. getUrlReturnData(userUrl);
nickname = userInfo.substring(userInfo.indexOf("nickname":"" )+11,userInfo.indexOf("","sex" ));
sex = userInfo.substring(userInfo.indexOf("sex":" )+5,userInfo.indexOf(","language":"" ));
headimgurl = userInfo.substring(userInfo.indexOf(""headimgurl":"" )+14,userInfo.indexOf("","privilege"" ));
System. out.println( " token = " + token);
System. out.println( "access_token = " + access_token );
System. out.println( "openID = "+ openId);
System. out.println( "userInfo = " + userInfo);
System. out.println( "nickname = " + nickname);
System. out.println( "sex = " + sex);
System. out.println( "imgurl = " + headimgurl);
if(code == null || "".equals(code) || token == null || "".equals(token ) || userInfo == null || "".equals(userInfo)){
//登錄失敗,用戶重新登錄,從新拉取用戶信息
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxfb42d3d1c8d4c11b&redirect_uri=http://192.168.246.172/business/vote/getCode.do&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect" ;
response.sendRedirect(url);
} else{
//登錄成功后要跳到的頁面
response.sendRedirect( "http://192.168.246.172/business/index.html" );
}
}

測試結果圖如下:



注:
1.此為網頁授權獲取用戶基本信息,必須為服務號,訂閱號是沒有權限通過網頁授權來獲取用戶基本信息的
2.必須是80端口
3.用戶授權獲取code連接必須在微信客戶端打開
4.開發者中心的服務器配置可以不用啟用,最后我還是成功的獲取到了用戶的信息

總結

以上是生活随笔為你收集整理的微信公众平台--服务号/订阅号--网页授权获取用户基本信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。