生活随笔
收集整理的這篇文章主要介紹了
社交登录整合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.社交登錄介紹
1.用戶在passport認證中心準備登錄時可以點擊第三方登錄按鈕跳轉到
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
引導用戶進入用戶授權頁面
2.用戶授權完成后
http://授權完成后/success?code=fef987b3f9ad1169955840b467bfc661
第三方網站將調用我們在第三方的回調地址,再將授權碼寫入到數據庫中
3.通過授權碼code發送post請求到第三方網站,換取access_token
授權碼請求公式
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
將換取來的token寫入到我們用戶的數據庫
4.在用戶使用過程中通過access_token獲取用戶(第三方網站用戶數據)
14.整合社交登錄
1.地址一:
引導用戶與第三方平臺交互地址(第三方平臺地址,頁面上有我們的授權信息)
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
2. 地址二:
授權完成后返回授權碼
http://授權完成后/success?code=fef987b3f9ad1169955840b467bfc661
3.地址三:
https://api.weibo.com/oauth2/access_token
使用獲得的授權碼code交換獲得access_token的地址,需要加入client_secret應用密匙,并且使用post請求進行交換,access_token
4.地址四:
https://api.weibo.com/2/users/show.json
使用access_token換取用戶信息地址
@RequestMapping("vlogin")public String vlogin(String code
,HttpServletRequest request
){String s3
="https://api.weibo.com/oauth2/access_token?";HashMap<String, String> paramMap
= new HashMap<>();paramMap
.put("client_id","3193708961");paramMap
.put("client_secret","df2b2370fbd3483cdd8a9eb422ca3253");paramMap
.put("grant_type","authorization_code");paramMap
.put("redirect_uri","http://passport.gmall.com:8085/vlogin");paramMap
.put("code",code
);String access_token_json
= HttpclientUtil.doPost(s3
, paramMap
);Map<String,String> access_map
= JSON
.parseObject(access_token_json
, Map.class);String access_token
= access_map
.get("access_token");String uid
= access_map
.get("uid");String s4
="https://api.weibo.com/2/users/show.json?access_token="+access_token
+"&uid="+uid
;String s
= HttpclientUtil.doGet(s4
);Map<String,Object> map
= JSON
.parseObject(s
, Map.class);UmsMember umsMember
= new UmsMember();umsMember
.setSourceType("2");umsMember
.setAccessCode(code
);umsMember
.setAccessToken(access_token
);umsMember
.setNickname((String)map
.get("screen_name"));umsMember
.setSourceUid(((Long)map
.get("id")));umsMember
.setCity((String) map
.get("location"));umsMember
.setGender((String) (map
.get("gender")));UmsMember umsCheck
= new UmsMember();umsCheck
.setSourceUid(umsMember
.getSourceUid());UmsMember checkUmsMember
= userService
.checkOauthUser(umsCheck
);if(checkUmsMember
==null){userService
.addOldOauthUser(umsMember
);}else{umsMember
=umsCheck
;}String token
="";String memberId
= umsMember
.getId();String nickname
= umsMember
.getNickname();Map<String,Object> userMap
=new HashMap<>();userMap
.put("memberId",memberId
);userMap
.put("nickname",nickname
);String ip
= request
.getHeader("x-forwarded-for");if(StringUtils.isBlank(ip
)) {ip
=request
.getRemoteAddr();if(StringUtils.isBlank(ip
)) {ip
="127.0.0.1";}}token
= JwtUtil.encode("2019gmall0105", userMap
, ip
);return "redirect:http://search.gmall.com:8083/index?token="+token
;}
總結
以上是生活随笔為你收集整理的社交登录整合的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。