如何实现第三方登录

1、百度搜索百度开发者中心

如何实现第三方登录

2、登陆开发者中心

如何实现第三方登录

3、如果有账号就可以直接登录,如果没有就注册一个,手机号就可以注册.

登录成功,右上方就可以出现一个,申请记录

如何实现第三方登录

 

 

如何实现第三方登录

 

4、进入百度云官网

 

如何实现第三方登录

 

 

5、注册成功后,点击应用管理,创建工程

 

 

如何实现第三方登录

 

6、创建成功后,出现这个界面

 

如何实现第三方登录

 

其中API KEY 和Secret Key,后面会用到。

7、创建成功后,出现这个界面

 

如何实现第三方登录

 

8、找到列表中的安全设置

 

如何实现第三方登录

 

授权回调页是指当在第三方登录过后,页面跳转到授权回调页界面。

根域名绑定自己申请的域名,IP地址写自己备案的服务器IP即可。

9、在eclipse中创建一个web工程,在webcontent中创建一个jsp文件叫做index

 

代码如下

<%@ 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=pUeLIDKF2af5sfQHLdA21D7u&redirect_uri=http://www.lijunzheworld.top/disanfang/BaiDuServelt&display=popup";
        }
</script>
<body>
<input type="button" value="百度登录" onclick="bdlogin()">
</body>
</html>

 

注意其中的client_id为啊刚才创建的工程的API KEY,redirect_uri为百度第三方登录网站。

创建好后再创建一个名为result的jsp文件里面随便写一些内容即可,后面才会用到。

10、将web.xml中的除了index.jsp的weclome-file文件全部删除,方便以后在输入网址时直接进入index.jsp文件

11、在src在src中创建一个servelt文件。

代码如下

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class BaiDuServelt 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.lijunzheworld.top/disanfang/BaiDuServelt";
        String client_secret = "o9d18nDzdYqWmX5oadHfG4SbXbMnGKx7";
        String client_id = "pUeLIDKF2af5sfQHLdA21D7u";
        String url1 = "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 content1 = "";

        try {
            // 创建一个HttpClient对象
            CloseableHttpClient httpClient = HttpClients.createDefault();
            // 创建一个Get请求
            HttpGet getReq = new HttpGet(url1);

            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();
            content1 = EntityUtils.toString(entity, "UTF-8");

        } catch (Exception e) {
            e.printStackTrace();
        }

        Map<String, Object> map = JSON.parseObject(content1, new TypeReference<Map<String, Object>>() {
        });
        String access_token = (String) map.get("access_token");

        print(access_token, request, response);
    }

    public void print(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);
//        }
    }

}

 

如果要登陆你自己的界面的话只需要改变三个地方即可。

如何实现第三方登录

 

redirect_uri :自己设置的接口回调页

client_secret:你创建的工程的secret key

client_id :你自己创建的工程的API KEY

12、工程引包

 

如何实现第三方登录

 

这些包都可以在百度中找到,一个是fastjson包 另一个是httpclient包,在网上下载,引入工程即可。

12、完成后将工程导出war包,登陆远程服务器

 

如何实现第三方登录

 

将war包复制到tomcat文件夹的webapps中

如何实现第三方登录

 

运行tomcat将其发布,然后回到自己的电脑打开网页输入自己注册的域名

 

如何实现第三方登录

 

出现该界面点击,继续操作,若出现result文件中的数据则第三方登录成功。