欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)  微博登錄、微信登錄、qq登錄實(shí)現(xiàn)代碼

 更新時(shí)間:2016年10月13日 09:21:06   投稿:lqh  
這篇文章主要介紹了java實(shí)現(xiàn) 微博登錄、微信登錄、qq登錄實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下

微信,微博,QQ,這是現(xiàn)在目前用的最多的手機(jī) APP,我們做產(chǎn)品哪能不跟他們不沾邊,對(duì)于登錄,我想誰(shuí)也不想要多少個(gè)帳號(hào)密碼,根本記不??!

為了增加用戶體驗(yàn),用戶能夠快速的注冊(cè)登錄,第三方賬號(hào)進(jìn)行登錄注冊(cè)的的需求也就由此而誕生

1、微信

 1) 微信登錄也是最坑人的,需要花300大洋成為開(kāi)發(fā)者賬戶,沒(méi)辦法誰(shuí)讓微信用戶群體大呢所以也就只好認(rèn)了;然后登錄網(wǎng)站后臺(tái)需要?jiǎng)?chuàng)建網(wǎng)站應(yīng)用,填寫(xiě)授權(quán)回調(diào)域(登錄網(wǎng)站的域名)只填寫(xiě)域名即可

申請(qǐng)地址: https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN

 2)查看微信提供的接口,寫(xiě)java代碼

 public void wx() {
 try {
  response.sendRedirect("https://open.weixin.qq.com/connect/qrconnect?appid="
   + ShareLoginDict.WEIXINKEY.getState()
   + "&redirect_uri="
   + URLEncoder.encode(ShareLoginDict.WEIXINURL.getState()) 
   + "&response_type=code&scope=snsapi_login&state=66666#wechat_redirect");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userwx(String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) WeiXinAPI
  .getToken(return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> user = (Map<String, Object>) WeiXinAPI
   .getWxUser(token.get("access_token").toString(),
    token.get("openid").toString());
  if (user != null) {
  result.addModel("openid", user.get("openid"));
  result.addModel("nickname", user.get("nickname"));
  result.addModel("headimgurl", user.get("headimgurl"));
  result.addModel("data", "data_success");
  }else{
  result.addModel("data", "data_null");
  }
 }else{
  result.addModel("data", "data_null");
 }
 return result;
 }

當(dāng)用戶通過(guò)微信登錄時(shí),調(diào)用微信接口獲取用戶接口返回微信端的openid,昵稱(chēng),頭像;然后將此信息存入到瀏覽器的cookie中,當(dāng)用戶瀏覽其他信息時(shí),辨別如果是用戶是用微信登錄的,攔截器直接從cookie中獲取用戶的信息顯示昵稱(chēng)和頭像,并同時(shí)判斷該openid是否和數(shù)據(jù)庫(kù)中用戶做綁定,如果沒(méi)有綁定提示用戶注冊(cè)。

2、qq登錄

 1)qq互聯(lián)創(chuàng)建應(yīng)用

接入QQ登錄前,網(wǎng)站需首先進(jìn)行申請(qǐng),獲得對(duì)應(yīng)的appid與appkey,以保證后續(xù)流程中可正確對(duì)網(wǎng)站與用戶進(jìn)行驗(yàn)證與授權(quán)。

申請(qǐng)appid和appkey的用途

 appid :應(yīng)用的唯一標(biāo)識(shí)。在OAuth2.0認(rèn)證過(guò)程中,appid的值即為oauth_consumer_key的值。

appkey:appid對(duì)應(yīng)的密鑰,訪問(wèn)用戶資源時(shí)用來(lái)驗(yàn)證應(yīng)用的合法性。在OAuth2.0認(rèn)證過(guò)程中,appkey的值即為oauth_consumer_secret的值。

申請(qǐng)地址: http://connect.qq.com/intro/login/

 2)查看QQ提供的接口,寫(xiě)java代碼

public void qq() {
 try {
  response.sendRedirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
   + ShareLoginDict.QQKEY.getState()
   + "&redirect_uri="
   + ShareLoginDict.QQURL.getState() + "&scope=get_user_info");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userqq(String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) QQAPI
  .getToken(return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> tokenme = (Map<String, Object>) QQAPI
   .getTokenMeOpenId(token.get("access_token").toString());
  if (tokenme != null && tokenme.get("openid") != null) {
  Map<String, Object> user = (Map<String, Object>) QQAPI
   .getQqUser(token.get("access_token").toString(),
    tokenme.get("openid").toString());
  if (user != null) {
   result.addModel("openid", tokenme.get("openid"));
   result.addModel("nickname", user.get("nickname"));
   result.addModel("figureurl", user.get("figureurl"));
   result.addModel("data", "data_success");
  }else{
   result.addModel("data", "data_null");
  }
  }else{
  result.addModel("data", "data_null");
  }

 }else{
  result.addModel("data", "data_null");
 }
 return result;
 } 

當(dāng)用戶通過(guò)QQ登錄時(shí),調(diào)用QQ接口獲取用戶接口返回QQ端的openid,昵稱(chēng),頭像;然后將此信息存入到瀏覽器的cookie中,當(dāng)用戶瀏覽其他信息時(shí),辨別如果是用戶是用微信登錄的,攔截器直接從cookie中獲取用戶的信息顯示昵稱(chēng)和頭像,并同時(shí)判斷該openid是否和數(shù)據(jù)庫(kù)中用戶做綁定,如果沒(méi)有綁定提示用戶注冊(cè)。

3 微博登錄

 1)微博創(chuàng)建應(yīng)用

  申請(qǐng)地址:http://open.weibo.com/authentication

 2)查看微博提供的接口,寫(xiě)java代碼

public void wb() {
 try {
  response.sendRedirect("https://api.weibo.com/oauth2/authorize?client_id="
   + ShareLoginDict.WEIBOKEY.getState()
   + "&redirect_uri="
   + ShareLoginDict.WEIBOURL.getState()
   + "&response_type=code");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

@Override
 public Result userwb(String return_url, String return_code) {
 Result result = new Result();
 Map<String, Object> token = (Map<String, Object>) WeiBoAPI.getToken(
  return_url, return_code);
 if (token != null && token.get("access_token") != null) {
  Map<String, Object> user = (Map<String, Object>) WeiBoAPI
   .getWbUser(token.get("access_token").toString(),
    token.get("uid").toString());
  if (user != null) {
  result.addModel("name", user.get("screen_name"));
  result.addModel("pic", user.get("avatar_large"));
  result.addModel("idstr", user.get("idstr"));
  result.addModel("data", "data_success");
  }else{
  result.addModel("data", "data_null");
  }
 }else{
  result.addModel("data", "data_null");
 }
 return result;
 }

當(dāng)用戶通過(guò)微博登錄時(shí),調(diào)用微博接口獲取用戶接口返回微博端的idstr,昵稱(chēng),頭像;然后將此信息存入到瀏覽器的cookie中,當(dāng)用戶瀏覽其他信息時(shí),辨別如果是用戶是用微信登錄的,攔截器直接從cookie中獲取用戶的信息顯示昵稱(chēng)和頭像,并同時(shí)判斷該openid是否和數(shù)據(jù)庫(kù)中用戶做綁定,如果沒(méi)有綁定提示用戶注冊(cè)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • IntelliJ IDEA 安裝教程2019.09.23(最新版)

    IntelliJ IDEA 安裝教程2019.09.23(最新版)

    本文通過(guò)圖文并茂的形式給大家介紹了IntelliJ IDEA 安裝教程2019.09.23最新版,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • SpringBoot 2.0 整合sharding-jdbc中間件實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表

    SpringBoot 2.0 整合sharding-jdbc中間件實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表

    這篇文章主要介紹了SpringBoot 2.0 整合sharding-jdbc中間件,實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-06-06
  • springBoot @Enable* 注解的使用

    springBoot @Enable* 注解的使用

    這篇文章主要介紹了springBoot @Enable* 注解的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)

    springboot集成Swagger的方法(讓你擁有屬于自己的api管理器)

    在大型的項(xiàng)目中,如果你有非常多的接口需要統(tǒng)一管理,或者需要進(jìn)行接口測(cè)試,那么我們通常會(huì)在繁雜地api中找到需要進(jìn)行測(cè)試或者管理的接口,接下來(lái)通過(guò)本文給大家介紹springboot集成Swagger的方法讓你擁有屬于自己的api管理器,感興趣的朋友一起看看吧
    2021-11-11
  • JAVA的LIST接口的REMOVE重載方法調(diào)用原理解析

    JAVA的LIST接口的REMOVE重載方法調(diào)用原理解析

    這篇文章主要介紹了JAVA的LIST接口的REMOVE重載方法調(diào)用原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Spring Security學(xué)習(xí)筆記(一)

    Spring Security學(xué)習(xí)筆記(一)

    這篇文章主要介紹了Spring Security的相關(guān)資料,幫助大家開(kāi)始學(xué)習(xí)Spring Security框架,感興趣的朋友可以了解下
    2020-09-09
  • 設(shè)計(jì)模式之中介者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    設(shè)計(jì)模式之中介者模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了設(shè)計(jì)模式之中介者模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java?精煉解讀遞歸的概念與使用

    Java?精煉解讀遞歸的概念與使用

    一說(shuō)起遞歸,我想每個(gè)人都不陌生。舉個(gè)從小就聽(tīng)過(guò)的例子:從前有座山,山里有座廟,廟里有個(gè)和尚,和尚在講故事,從前有座山,山里有座廟,廟里有個(gè)和尚,和尚在講故事,從前有座山,要理解遞歸,就得先了解什么是遞歸,實(shí)際上這句話就是一個(gè)遞歸
    2022-03-03
  • SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    這篇文章主要介紹了SPRING FRAMEWORK BEAN作用域和生命周期原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java如何基于poi操作Wold工具類(lèi)

    Java如何基于poi操作Wold工具類(lèi)

    這篇文章主要介紹了Java如何基于poi操作Wold工具類(lèi),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論