小程序前端 app.js

成都創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)從江,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
wx.login({
success: res = {
// 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId
if(res.code){
wx.getUserInfo({
success: function(res_user){
wx.request({
url: '', //這里是本地請(qǐng)旅脊求路徑,可以寫你自己的本地路徑,也可以寫線上環(huán)境
data: {
code: res.code,//獲取openid的話 需要向后臺(tái)傳遞code,利用code請(qǐng)求api獲取openid
headurl: res_user.userInfo.avatarUrl,//這些是用戶的基本信息
nickname:res_user.userInfo.nickName,//獲取昵稱
sex:res_user.userInfo.gender,//獲取性別
country: res_user.userInfo.country,//獲取國(guó)家
province: res_user.userInfo.province,//獲取省份
city: res_user.userInfo.city//獲取城市
},
success: function(res){
wx.setStorageSync("openid", res.data)//可以把openid保存起來,以便后期需求的使用
}
})
}
})
}
}
})
一些詳細(xì)的參數(shù)畢亮請(qǐng)參考微信api:
下來就拆數(shù)滲是Java 上面這是controller,其中有些地方也是取別人的優(yōu)點(diǎn)寫的
@ResponseBody
@RequestMapping(value = "/getOpenId", method = RequestMethod.GET) // 獲取用戶信息
public String getOpenId(@Param("code") String code, @RequestParam("headurl") String headurl,
@RequestParam("nickname") String nickname, @RequestParam("sex") String sex,
@RequestParam("country") String country, @RequestParam("province") String province,
@RequestParam("city") String city) {
String WX_URL = ";secret=SECRETjs_code=JSCODEgrant_type=authorization_code";
try {
if (StringUtils.isBlank(code)) {
System.out.println("code為空");
} else {
String requestUrl = WX_URL.replace("APPID", WxConfig.APPID).replace("SECRET", WxConfig.APPSECRECT)
.replace("JSCODE", code).replace("authorization_code", WxConfig.GRANTTYPE);
JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);
if (jsonObject != null) {
try {
// 業(yè)務(wù)操作
String openid = jsonObject.getString("openid");
wechatService.selectUserByOpenId(openid, headurl, nickname, sex, country, province, city);
return openid;
} catch (Exception e) {
System.out.println("業(yè)務(wù)操作失敗");
e.printStackTrace();
}
} else {
System.out.println("code無效");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "錯(cuò)誤";
} //可能代碼復(fù)制過來,錯(cuò)位了,你們自己格式化一下吧。
登錄后復(fù)制
?
首先獲取openid根據(jù)文檔需要訪問一個(gè)https接口 如下:
;secret=SECRETjs_code=JSCODEgrant_type=authorization_code
appid是你小程序的appid,secret是你小程序的appsercet,js_code是前臺(tái)登陸成功后返回給你的code,grant_type為固定值authorization_code.
appid跟secret的查看在微信公眾平臺(tái):
注意:appid跟secret只有小程序的管理員可以看到,如果只是有權(quán)限的話,還是看不到,必須管理員掃碼才可以看到,進(jìn)去之后就在 設(shè)置→→→開發(fā)設(shè)置
controller中涉及到三個(gè)類,CommonUtil是用來請(qǐng)求微信接口的,TrustManager是管理器,WxConfig是配置一些你的小程序 信息
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java點(diǎn)虐 .ConnectException;
import java點(diǎn)虐 .URL;
import javax點(diǎn)虐 .ssl.HttpsURLConnection;
import javax點(diǎn)虐 .ssl.SSLContext;
import javax點(diǎn)虐 .ssl.SSLSocketFactory;
import javax點(diǎn)虐 .ssl.TrustManager;
import net.sf.json.JSONObject;
public class CommonUtil {
/**
* 發(fā)送https請(qǐng)求
* @param requestUrl 請(qǐng)求地址
* @param requestMethod 請(qǐng)求方式(GET、POST)
* @param outputStr 提交的數(shù)據(jù)
* @return JSONObject(通過JSONObject.get(key)的方式獲取json對(duì)象的屬性值)
*/
public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
try {
// 創(chuàng)建SSLContext對(duì)象,并使用我們指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 從上述SSLContext對(duì)象中得到SSLSocketFactory對(duì)象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(ssf);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 設(shè)置請(qǐng)求方式(GET/POST)
conn.setRequestMethod(requestMethod);
// 當(dāng)outputStr不為null時(shí)向輸出流寫數(shù)據(jù)
if (null != outputStr) {
OutputStream outputStream = conn.getOutputStream();
// 注意編碼格式
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 從輸入流讀取返回內(nèi)容
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
// 釋放資源
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
inputStream = null;
conn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
System.out.println("連接超時(shí)");
} catch (Exception e) {
System.out.println("請(qǐng)求異常");
}
return jsonObject;
}
}
登錄后復(fù)制
?
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax點(diǎn)虐 .ssl.TrustManager;
import javax點(diǎn)虐 .ssl.X509TrustManager;
/**
* 類名: MyX509TrustManager.java/br
* 描述: 信任管理器/br
* 開發(fā)人員:wangl/br
* 創(chuàng)建時(shí)間: 2018-01-09/br
*/
public class MyX509TrustManager implements X509TrustManager {
// 檢查客戶端證書
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
// 檢查服務(wù)器端證書
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
// 返回受信任的X509證書數(shù)組
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
登錄后復(fù)制
?
有了這兩個(gè)類就可以獲取到用戶的openid了,大家都知道,保存用戶的昵稱跟頭像是沒什么用的,但是需求有需要,只好保存 了,下面我貼出業(yè)務(wù)層代碼,哈哈哈哈哈,我只是在瞎搞,自己練習(xí),如果代碼有什么可笑的地方不要噴我。
如果用戶更換了頭像或者昵稱,我們并不知道用戶什么時(shí)候更換,所以我想了一種方法,判斷用戶是否改變數(shù)據(jù),如果改變數(shù)據(jù)的話,我們?cè)龠M(jìn)行數(shù)據(jù)庫(kù)的操作,如果不改變的話直接return返回,結(jié)束操作。
下面這段代碼是ServiceImpl類。
public void selectUserByOpenId(String openid, String headurl, String nickname, String sex, String country,
String province, String city) {
String userip = country+province+city;//用戶地址
String usersex = "";
User user = mapper.selectUser(openid);
if(user!=null){//如果用戶不等于空
if(user.getNickname().equals(nickname)user.getHeadurl().equals(headurl)user.getSex().equals(sex)user.getUserip().equals(userip)){
System.out.println("數(shù)據(jù)暫未修改");
return;
}else{
try {
mapper.updateUserMseeage(openid,nickname,headurl,sex,userip);
System.out.println("修改數(shù)據(jù)成功");
} catch (Exception e) {
System.out.println("修改數(shù)據(jù)失敗");
e.printStackTrace();
}
}
}else{//用戶為空進(jìn)行
try {
String phone = "";
String createtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
mapper.initUser(openid,nickname,headurl,phone,sex,userip,createtime);
} catch (Exception e) {
System.out.println("初始化錯(cuò)誤");
e.printStackTrace();
}
}
}
登錄后復(fù)制
?
QQ:434494584
關(guān)于微信公眾號(hào)獲取openId,請(qǐng)點(diǎn)擊
小程序獲取openid加java后臺(tái)代碼
小程序
小程序java后臺(tái)
屬羊人要“沉住氣”,別跟這個(gè)人分開,是來“擁護(hù)”你成事的
麥玲玲僅供娛樂
?廣告
?
微信小程序wx.getUserInfo授權(quán)獲取用戶信息(頭像、昵稱)的實(shí)現(xiàn)
37下載·0評(píng)論
2020年10月14日
java微信小程序授權(quán) 獲取用戶信息、獲取openid和session_key 獲取用戶unionId、(用戶數(shù)據(jù)的簽名驗(yàn)證和加解密)JAVA版
5.8W閱讀·63評(píng)論·42點(diǎn)贊
2018年5月9日
Java后臺(tái)實(shí)現(xiàn)網(wǎng)站微信掃碼登錄功能,獲取用戶openid,及微信用戶信息(小程序碼方案),關(guān)聯(lián)微信小程序(個(gè)人主體小程序也可以)
1098閱讀·0評(píng)論·2點(diǎn)贊
2022年10月26日
微信小程序請(qǐng)求后臺(tái)接口(完整版)
1.5W閱讀·0評(píng)論·17點(diǎn)贊
2020年7月20日
java實(shí)現(xiàn)微信授權(quán)獲取用戶openid及授權(quán)用戶相關(guān)信息
2.2W閱讀·12評(píng)論·5點(diǎn)贊
2018年1月9日
java微信獲取用戶信息_Java微信公眾平臺(tái)開發(fā)(十)--微信用戶信息的獲取
252閱讀·0評(píng)論·0點(diǎn)贊
2021年2月12日
?
電馬新能源車24.99萬元起,現(xiàn)車交付!
電馬新能源車
?廣告
微信小程序獲取用戶信息(昵稱、頭像、openid等)
8480閱讀·2評(píng)論·2點(diǎn)贊
2021年6月22日
通過微信用戶的openid獲取用戶的頭像,昵稱,性別等信息!
7.3W閱讀·6評(píng)論·5點(diǎn)贊
2018年7月16日
java 根據(jù)openid查詢_java 根據(jù)openId獲取用戶基本信息
1060閱讀·0評(píng)論·0點(diǎn)贊
2021年3月16日
java后端實(shí)現(xiàn)微信登錄獲取code,后端獲取code、openid以及用戶信息數(shù)據(jù)
5662閱讀·8評(píng)論·1點(diǎn)贊
2021年11月30日
微信小程序如何獲取微信昵稱和頭像
1.7W閱讀·2評(píng)論·8點(diǎn)贊
2022年3月1日
java獲取微信用戶openid
1.3W閱讀·1評(píng)論·0點(diǎn)贊
2018年7月6日
微信小程序獲取用戶信息(getUserProfile接口回收后)——通過頭像昵稱填寫獲取用戶頭像和昵稱
724閱讀·0評(píng)論·0點(diǎn)贊
2022年11月24日
java獲取openid_JAVA獲取微信小程序openid和獲取公眾號(hào)openid,以及通過openid獲取用戶信息...
1229閱讀·0評(píng)論·0點(diǎn)贊
2021年2月12日
java后臺(tái)微信小程序獲取手機(jī)號(hào)
1794閱讀·1評(píng)論·1點(diǎn)贊
2020年9月25日
微信小程序——獲取用戶手機(jī)號(hào)(Java后臺(tái))
1285閱讀·0評(píng)論·1點(diǎn)贊
2022年8月25日
java微信小程序獲取用戶openid_微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解...
632閱讀·0評(píng)論·0點(diǎn)贊
2021年3月8日
java微信開發(fā)-之如何獲取openid 和用戶信息
3.5W閱讀·18評(píng)論·8點(diǎn)贊
2016年12月6日
微信公眾號(hào)H5獲取用戶openid等用戶信息(java)
1182閱讀·1評(píng)論·3點(diǎn)贊
2021年11月4日
去首頁(yè)
看看更多熱門內(nèi)容
評(píng)論14
?
for__rain
?
贊
就這個(gè)發(fā)送http請(qǐng)求,看了一堆憨憨的操作,總算找到這個(gè)好用的啦,謝謝
2019.10.21
?
煙雨驚蟄
?
贊
[code=java] //幫你們補(bǔ)上WxConfig public class WxConfig { public static String APPID = "你的APPID "; public static String APPSECRECT = "你的APPSECRECT "; public static String GRANTTYPE = "你的GRANTTYPE "; } [/code]
2019.04.09
?
薩埵十二
?
贊
大哥您好,我想請(qǐng)問一下,沒有appid可以獲取用戶的openid么?
因?yàn)?JSP 默液襲拿認(rèn)取到的是iso-8859-1的,禪皮所以要先按iso-8859-1取出來,再轉(zhuǎn)鬧搭成utf-8
當(dāng)前名稱:用Java代碼取一個(gè)網(wǎng)名 java代碼命名規(guī)范
當(dāng)前鏈接:http://chinadenli.net/article44/dspjoee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、網(wǎng)站營(yíng)銷、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、云服務(wù)器、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)