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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

微信登录/第三方登录

發布時間:2023/12/1 综合教程 54 生活家
生活随笔 收集整理的這篇文章主要介紹了 微信登录/第三方登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信登錄

  • 1、二維碼
  • 2、授權成功
  • 3、題外
  • 4、本篇用到的發送get請求的工具類

微信登錄官網:
https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

1、二維碼

  • 點擊微信登錄,彈出微信登錄的二維碼
/*APPID:應用唯一標識(公司申請微信登錄成功后都有一個appid)REDIRECT_URI:請使用urlEncode對鏈接進行處理(一般項目上線后都有一個域名(如:www.某度.com),這里就填寫需要訪問項目的域名:注意該域名對應的項目端口必須是80端口)注意:域名后面也可以跟需要跳轉的路徑,如:http://www.某度.com/callback.html 
*/
//訪問該路徑,彈出二維碼
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=1#wechat_redirect"

樣:

2、授權成功

  • 用戶點擊同意微信登錄后可以從訪問路徑里面獲取到code
通過code,傳到后臺能獲取到openid和令牌access_token等)openid:每個微信用戶的唯一標識,可以拿它到數據庫中查詢來判斷他以前是否登錄過access_token:令牌,可以通過他和openid獲取到微信登錄用戶的信息
  • 注:我這里是跳轉的前端頁面所以是根據href獲取的
//打印出來結果:http://域名:80端口的/callback.html?code=aaaaaaaaaaa&state=1let url = location.href;
  • 截取路徑里面的code值,拿它獲取openid
//1、發送get請求到微信平臺,拿到Openid
//注意:替換字符串里面括號內的內容(包含括號)
//這個地址是微信官方給的
String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=(自己公司的APPID)&secret=(密文:公司注冊成功后也有)&code=(這里填掃碼傳來的CODE)&grant_type=authorization_code";//2、使用工具類發送get請求(工具類這本篇文章的最后),發送成功后得到的就是openid和access_token
String httpGet = HttpClientUtils.httpGet(url);//最后httpGet 結果就是這樣:我們只要openid和access_token
//注意這只是json字符串,要獲取里面的內容需要轉成json對象
{"access_token":"bbb","expires_in":aaa,"refresh_token":"ccc","openid":"ddd"}//3、然后我們根據這個openid到數據庫中去查詢(這里有個微信登錄用戶類),判斷他以前是否已經用微信登錄過了........ 查詢代碼略過如果以前已經登錄過了(系統記錄了微信登錄信息了),那么就直接在這結束邏輯,并且跳轉到登錄過后的界面.....................//4、如果他是第一次用微信登錄,那么根據openid和access_token也是發送一個get請求。拿到到微信用戶點擊授權后,微信官網給你的信息
//替換括號的內容(包括括號):這個地址和上面的是不一樣的,都是微信官方給的
String urlUser ="https://api.weixin.qq.com/sns/userinfo?access_token=(上面使用code獲取到他給你的ACCESS_TOKEN)&openid=(上面使用code獲取到他給你的OPENID)";String WxLogin = HttpClientUtils.httpGet(urlUser);/ *這坨是json字符串,也是需要轉json對象最終拿到的字符串結果:(選取我們需要的保存即可,注意:一定要保存openid){"openid":"OPENID", //微信用戶的唯一標識"nickname":"NICKNAME", //微信用戶的昵稱"sex":1, //性別"province":"PROVINCE","city":"CITY","country":"COUNTRY","headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0","unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"}
*///5、到這基本上也就結束了,后面的邏輯不過就是像一個普通的user用戶一樣保存上面的一坨微信用戶信息。然后跳轉到登錄過后的界面即可.........

3、題外

//這個是寫給本人看的//如果需要跳轉到前臺另一個頁面在跳轉到后臺的話,就需要這樣,路徑直接寫死
//這樣避免了重新跳轉頁面,openid和access_token拿不到的問題,(直接將這兩個數據傳發到路徑里傳到前臺,到時候在獲取到路徑里面的openid然后在傳回來)
String bindUrl ="http://域名/bindle.html?access_token="+access_token+"&openid="+openid+"";

4、本篇用到的發送get請求的工具類

  • 直接拷貝使用即可
/*** 使用httpclient組件發送http請求*   get:現在只用到get*   post*/
public class HttpClientUtils {/*** 發送get請求* @param url 請求地址* @return 返回內容 json*/public static String httpGet(String url){// 1 創建發起請求客戶端try {HttpClient client = new HttpClient();// 2 創建要發起請求-tetGetMethod getMethod = new GetMethod(url);getMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");// 3 通過客戶端傳入請求就可以發起請求,獲取響應對象client.executeMethod(getMethod);// 4 提取響應json字符串返回String result = new String(getMethod.getResponseBodyAsString().getBytes("utf8"));return result;} catch (IOException e) {e.printStackTrace();}return null;}
}

總結

以上是生活随笔為你收集整理的微信登录/第三方登录的全部內容,希望文章能夠幫你解決所遇到的問題。

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