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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度第三方登陆

發布時間:2023/12/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度第三方登陆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建百度工程

1、搜索“百度開發著中心”,如圖:

2、點擊進入官網,如圖:

3、登陸成功后,將鼠標放在用戶名上,點擊申請記錄,如圖:

4、點擊百度云官網,如果是第一次登陸百度云,登陸成功后跳轉到下面的界面,完善相關信息,如圖:

5、激活成功后,回到下面的界面,如圖:

6、點擊應用管理,如圖:

7、創建工程,成功后進入下面界面,如圖:

注意:基本信息的中API Key Secret Key將會在編程中用到

?

8、點擊安全設置,完善相關信息,如圖:

?

編程:

第一步:用戶訪問界面

1、在Eclipse新建web項目,在WebContent文件夾下新建JSP文件,如下圖:

2、在index.jsp文件中寫下面代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <script type="text/javascript">function bdlogin(){location.href="https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=8zpRkYaTqeY7U5PtBcQabTsV&redirect_uri=http://www.willyqi.top/venu/BaiDuServlet&display=popup";} </script> <body> <input type="button" value="百度登錄" onclick="bdlogin()"> </body> </html>

注意:client_id是上文所提到API Key? ? ,redirect_uri是回調地址

這次點擊是我們和百度交互然后百度又返回給我們了一個code值

?

第二步:獲取access_token

在項目中的Java Resources創建servlet,代碼如下,完成后,導入httpclient ?jar包 和fastjson jar包:

public class BaiDuServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String code = request.getParameter("code");String redirect_uri= "http://www.willyqi.top/venu/BaiDuServlet"; //回調地址String client_secret = "0sDDGed56GKqKKEI8Bw58o48d6EBECsM"; //Secret KeyString client_id = "8zpRkYaTqeY7U5PtBcQabTsV"; //API KeyString url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code="+code+"&client_id="+client_id+"&client_secret="+client_secret+"&redirect_uri="+redirect_uri+"";String content= "";try {//創建一個HttpClient對象CloseableHttpClient httpClient = HttpClients.createDefault();//創建一個Get請求HttpGet getReq = new HttpGet(url);getReq.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ");getReq.addHeader("Accept-Encoding", "gzip, deflate, sdch, br");getReq.addHeader("Accept-Language", "zh-CN,zh;q=0.8");getReq.addHeader("Cache-Control","max-age=0");getReq.addHeader("Connection", "keep-alive");getReq.addHeader("Host", "openapi.baidu.com");getReq.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");HttpResponse res = httpClient.execute(getReq);HttpEntity entity = res.getEntity(); content= EntityUtils.toString(entity,"UTF-8");} catch (Exception e) {e.printStackTrace();}Map<String, Object> map = JSON.parseObject(content,new TypeReference<Map<String,Object>>(){});String access_token = (String) map.get("access_token");} }

上面用httpclient 將code傳遞給百度,百度會返回一組Json數據,其中包含access_token。這個access_token,具體作用就是獲取到用戶信息。

?

第三步:獲取用戶信息

public void getUserInfo(String access_token,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String content ="";String url = "https://openapi.baidu.com/rest/2.0/passport/users/getInfo?access_token=" + access_token + "";try {// 創建一個HttpClient對象CloseableHttpClient httpClient = HttpClients.createDefault();// 創建一個Get請求HttpGet getReq = new HttpGet(url);getReq.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ");getReq.addHeader("Accept-Encoding", "gzip, deflate, sdch, br");getReq.addHeader("Accept-Language", "zh-CN,zh;q=0.8");getReq.addHeader("Cache-Control", "max-age=0");getReq.addHeader("Connection", "keep-alive");getReq.addHeader("Host", "openapi.baidu.com");getReq.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");HttpEntity entity = httpClient.execute(getReq).getEntity();content = EntityUtils.toString(entity, "UTF-8");System.out.println(content);} catch (Exception e) {e.printStackTrace();}Map<String, Object> map = JSON.parseObject(content, new TypeReference<Map<String, Object>>() {});System.out.println(map);String baiduid = (String) map.get("userid");System.out.println(baiduid);//List list = JdbcUtils.getList(User.class, "select * from user where baiduid=" + baiduid); // if (list.size() == 0) {request.setAttribute("message", map);request.getRequestDispatcher("/result.jsp").forward(request, response); // } else { // User user = (User) list.get(0); // req.getSession().setAttribute("UserInfo", user); // req.getRequestDispatcher("/success.jsp").forward(req, res); // }}

?

最終代碼:

public class BaiDuServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//獲取access_tokenString code = request.getParameter("code");String redirect_uri= "http://www.willyqi.top/venu/BaiDuServlet";String client_secret = "0sDDGed56GKqKKEI8Bw58o48d6EBECsM";String client_id = "8zpRkYaTqeY7U5PtBcQabTsV";String url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code="+code+"&client_id="+client_id+"&client_secret="+client_secret+"&redirect_uri="+redirect_uri+"";String content= "";try {//創建一個HttpClient對象CloseableHttpClient httpClient = HttpClients.createDefault();//創建一個Get請求HttpGet getReq = new HttpGet(url);getReq.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ");getReq.addHeader("Accept-Encoding", "gzip, deflate, sdch, br");getReq.addHeader("Accept-Language", "zh-CN,zh;q=0.8");getReq.addHeader("Cache-Control","max-age=0");getReq.addHeader("Connection", "keep-alive");getReq.addHeader("Host", "openapi.baidu.com");getReq.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");HttpResponse res = httpClient.execute(getReq);HttpEntity entity = res.getEntity(); content= EntityUtils.toString(entity,"UTF-8");} catch (Exception e) {e.printStackTrace();}Map<String, Object> map = JSON.parseObject(content,new TypeReference<Map<String,Object>>(){});String access_token = (String) map.get("access_token");getUserInfo(access_token, request, response);}//獲取用戶信息public void getUserInfo(String access_token,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String content ="";String url = "https://openapi.baidu.com/rest/2.0/passport/users/getInfo?access_token=" + access_token + "";try {// 創建一個HttpClient對象CloseableHttpClient httpClient = HttpClients.createDefault();// 創建一個Get請求HttpGet getReq = new HttpGet(url);getReq.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 ");getReq.addHeader("Accept-Encoding", "gzip, deflate, sdch, br");getReq.addHeader("Accept-Language", "zh-CN,zh;q=0.8");getReq.addHeader("Cache-Control", "max-age=0");getReq.addHeader("Connection", "keep-alive");getReq.addHeader("Host", "openapi.baidu.com");getReq.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");HttpEntity entity = httpClient.execute(getReq).getEntity();content = EntityUtils.toString(entity, "UTF-8");System.out.println(content);} catch (Exception e) {e.printStackTrace();}Map<String, Object> map = JSON.parseObject(content, new TypeReference<Map<String, Object>>() {});System.out.println(map);String baiduid = (String) map.get("userid");System.out.println(baiduid);//List list = JdbcUtils.getList(User.class, "select * from user where baiduid=" + baiduid); // if (list.size() == 0) {request.setAttribute("message", map);request.getRequestDispatcher("/result.jsp").forward(request, response); // } else { // User user = (User) list.get(0); // req.getSession().setAttribute("UserInfo", user); // req.getRequestDispatcher("/success.jsp").forward(req, res); // }} }

?

總結

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

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