qq怎麼新增第三方授權(qq如何第三方登入平臺)

1.1 第三方登入

所謂的第三方登入,就是APP識別到使用者將第三方的賬號繫結到自己平臺的 ID上直接完成登入的過程,簡單來說,是指基於使用者在第三方平臺上已有的賬號和密碼來快速完成己方應用的登入或者註冊的功能。常見的第三方登入平臺,一般是已經擁有大量使用者的平臺,國內的就是各大廠:微信、微博、QQ 等,國外有 Facebook、Twitter。

1.2 掃碼登入

現在的第三方平臺基本都支援掃碼登入,因為掃碼登入更加安全,

而且不用記賬號和密碼

如:微信、qq、支付寶

2. QQ第三方登入

2.1 qq互聯

https://connect.qq.com/

2.2 註冊開發者

2.3 文件

3. OAuth2.0 介紹

3.1. QQ登入OAuth2.0總體處理流程

QQ登入OAuth2.0總體處理流程如下:

Step1:申請接入,獲取appid和apikey;

Step2:開發應用,並設定協作者帳號進行測試聯調;

Step3:放置QQ登入按鈕;

Step4:通過使用者登入驗證和授權,獲取Access Token;

Step5:通過Access Token獲取使用者的OpenID;

Step6:呼叫OpenAPI,來請求訪問或修改使用者授權的資源。

4. 專案整合qq登入

4.1 maven匯入包

net.gplatform

Sdk4J

2.0

4.2. 配置

最好檢視qq給出的demo例子

建立
       qqconnectconfig.properties放在resources根目錄下

app_ID = 101543517

app_KEY = 3d43255254a6f50876661fe2bec86684

redirect_URI = http://javatv.cn/loginAfter

scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,get_tenpay_addr

baseURL = https://graph.qq.com/

getUserInfoURL = https://graph.qq.com/user/get_user_info

accessTokenURL = https://graph.qq.com/oauth2.0/token

authorizeURL = https://graph.qq.com/oauth2.0/authorize

getOpenIDURL = https://graph.qq.com/oauth2.0/me

addTopicURL = https://graph.qq.com/shuoshuo/add_topic

addBlogURL = https://graph.qq.com/blog/add_one_blog

addAlbumURL = https://graph.qq.com/photo/add_album

uploadPicURL = https://graph.qq.com/photo/upload_pic

listAlbumURL = https://graph.qq.com/photo/list_album

addShareURL = https://graph.qq.com/share/add_share

checkPageFansURL = https://graph.qq.com/user/check_page_fans

addTURL = https://graph.qq.com/t/add_t

addPicTURL = https://graph.qq.com/t/add_pic_t

delTURL = https://graph.qq.com/t/del_t

getWeiboUserInfoURL = https://graph.qq.com/user/get_info

getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info

getFansListURL = https://graph.qq.com/relation/get_fanslist

getIdolsListURL = https://graph.qq.com/relation/get_idollist

addIdolURL = https://graph.qq.com/relation/add_idol

delIdolURL = https://graph.qq.com/relation/del_idol

getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr

getRepostListURL = https://graph.qq.com/t/get_repost_list

version = 2.0.0.0

4.3. 建包oauth2並掃描

4.4. 編寫qqcontroller

  @Controller public class QQController {  @Autowired  RestTemplate restTemplate;    @Autowired  UserService userService;    // 將頁面重定向到qq第三方的登入頁面  @RequestMapping(value = "/qqLogin")  public void qqLogin(HttpServletRequest request, HttpServletResponse response) {  try {  response.setContentType("text/html;charset=utf-8");  response.sendRedirect(new Oauth().getAuthorizeURL(request));//將頁面重定向到qq第三方的登入頁面  } catch (Exception e) {  e.printStackTrace();  }  }  // 登入之後回撥地址  @RequestMapping(value = "/loginAfter")  public String qqLoginAfter(HttpServletRequest request, HttpServletResponse response) {  try {  System.err.println("============登入之後回撥地址==========");  AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);  String accessToken = null,  openID = null;  long tokenExpireIn = 0L;  if (accessTokenObj.getAccessToken().equals("")) { // 我們的網站被CSRF攻擊了或者使用者取消了授權  System.out.print("沒有獲取到響應引數");  } else {  accessToken = accessTokenObj.getAccessToken();  tokenExpireIn = accessTokenObj.getExpireIn();  // 利用獲取到的accessToken 去獲取當前用的openid -------- start  OpenID openIDObj = new OpenID(accessToken);  openID = openIDObj.getUserOpenID();  System.err.println("==============="   openID);  // 獲取qq資訊  String url = "https://graph.qq.com/user/get_user_info?access_token="    accessToken   "&oauth_consumer_key=101543517"   "&openid="   openID   "&format=json ";  String json = restTemplate.getForObject(url, String.class);  ObjectMapper objectMapper = new ObjectMapper();  HashMap map = objectMapper.readValue(json, HashMap.class);  System.err.println(map);  System.err.println(map.get("figureurl_qq_1"));  // 如果使用者表沒有當前openid,那就新增使用者,如果就有就直接跳轉主介面main.jsp/  User user = new User();  user.setQqOpenId(openID);  User u = userService.queryByParam(user);  if (u != null) {  System.out.println(u);  return "main";  } else {  // 新增使用者  user.setHeadImg((String) map.get("figureurl_qq_1"));  user.setLoginName(UUID.randomUUID().toString());  user.setLoginPwd("123456");  userService.insert(user);  return "main";  }  }  } catch (Exception e) {  e.printStackTrace();  }  return null;  } }        

4.5 登入頁面加入QQ登入

頁面加入

繫結事件

4.6. 修改 hosts

C:/Windows/System32/drivers/etc

修改hosts檔案,在末尾加入

127.0.0.1 javatv.cn