实现百度第三方登陆详细解答

第一步:前提条件是需要在阿里云买个域名,并且买一个服务器。然后将域名解析,和服务器的ip地址绑定。然后需要将服务器备案,别人才能访问你的网页。

接下来就是重点看怎么实现第三方登陆了。。。。。

第二步:登陆百度云https://developer.baidu.com/如果有账号就直接登陆,可以手机验证码登陆,忘记密码也不怕。

如果没有账号,就注册一个就行了。

第二步:把鼠标滑动到账户名上,会看到应用管理,点击应用管理。

点击应用管理后的页面如下:

然后,点击创建工程,下面那个是我之前创建过得工程,

在应用名称里起一个名字,我就叫“第三方登陆研究”,下面的两个框框不用管,点击创建后如图:

红色框框圈起来的就是我们后面需要的id和secret值,在JSP和Servlet里需要使用

然后单击“安全设置”,会出现下面的页面,

授权回调页就是你第三方访问成功后,进入的页面,例如我的:http://www.lyxwz.top/venu/BaiDuServlet

根域名绑定:就是你购买的域名

应用服务器ip地址:就是你购买的服务器的ip地址

确认无误后,点击确定;

这个时候,需要写一个项目venu,这个项目的登陆界面需要来一个第三方登陆,

在venu里的login.jsp 中的代码中的client_id和redirect_uri改成自己的,client_id 就是我们的API key ,redirect_uri就是我们之前填的授权回调页。

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

首先是我们的自己电脑的浏览器向购买服务器发送请求,然后购买的服务器给我们送来了一个登陆界面的信息,

然后我们点击百度登陆,进入 百度服务器的登陆界面

当我们点击授权,百度服务器就会核实我们的信息和百度里面的信息是否相符,如果相符,就会进入我们之前填写的授权回调页

我的授权会掉页里面的代码如下:重点:其中下面代码红色部分需要根据我们的百度密钥进行改正,

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 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.lyxwz.top/venu/BaiDuServlet";
        String client_secret = "Ri8MRRNMrj3nxGxEHMH04A4dI3qGbzGi";
        String client_id = "RcMfDQbylVtIvUIhNtNIW0W1";
        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 {
            // 鍒涘缓涓?涓狧ttpClient瀵硅薄
            CloseableHttpClient httpClient = HttpClients.createDefault();
            // 鍒涘缓涓?涓狦et璇锋眰
            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 {
            // 鍒涘缓涓?涓狧ttpClient瀵硅薄
            CloseableHttpClient httpClient = HttpClients.createDefault();
            // 鍒涘缓涓?涓狦et璇锋眰
            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);
//        }
    }

}

然后将这个项目压缩成war包,复制到购买的服务器上的tommcat里面的webapps中,点击lib里面的startup.bat就发布了  war包也自动解压了

我们就可以在任何一台电脑上像登陆百度一样登陆我们的项目了。

至此,百度第三方登陆完成!!!

原文地址:https://www.cnblogs.com/lyxcode/p/9655743.html

时间: 2024-08-30 04:56:31

实现百度第三方登陆详细解答的相关文章

百度apistore第三方登陆使用说明

最近做一个个人博客,其中的登陆模块我想使用第三方登陆来做.上网搜一下有好多例子,但是大多数都是一个网站的第三方登陆,如QQ.微博.人人,没有集成的组件,于是就在网上搜一下百度的apistore,百度果真没有让人失望.等我下载javascript版的sdk时,一盆冷水浇了下来,javascript版的sdk不可以下载,可能是网站出错的原因.不得已自己慢慢摸索,终于搞定了,下面我来分享一下这个插件,让后来人少走些弯路.[尼玛,百度api边的也太快了,半个月前做的例子,今天打开又不能用了.有花了一个多

百度apistore第三方登陆

最近做一个个人博客,其中的登陆模块我想使用第三方登陆来做.上网搜一下有好多例子,但是大多数都是一个网站的第三方登陆,如QQ.微博.人人,没有集成的组件,于是就在网上搜一下百度的apistore,百度果真没有让人失望.等我下载javascript版的sdk时,一盆冷水浇了下来,javascript版的sdk不可以下载,可能是网站出错的原因.不得已自己慢慢摸索,终于搞定了,下面我来分享一下这个插件,让后来人少走些弯路. 看图 后面使用PC端js组件设置,并且复制设置的代码,代码如下 <script

网站添加第三方登陆(PHP版)

这两周正在写毕业设计,我做的是一个问答网站.先介绍一下这个网站:这是一个关于大学生在线问答的网站,类似知乎和百度知道,不过功能没有人家多,毕竟这个网站我一个人在做.网站部署在阿里云,网站包括API,Web,IOS,三大模块,现在没有找到人帮忙写安卓,唉...  网站API已经写完了,Web端正在完善开发中,毕业答辩之前会吧基本功能上线,小伙伴们可以访问看看增加人气,不过没有写完,并且看着不咋好看,因为没人写前端,我又不擅长写页面所以有点低端.域名是:http://www.olas.cn 上面说的

利用FaceBook实现第三方登陆(自定义登陆按钮,非官方按钮)并获取用户数据

最近公司要写集成登陆SDK,具体集成那些我就不说了,其中就包含需要使用facebook登陆自己的app,于是我苦心研究facebook,写完后发现各种问题,对于问题我当然去查阅官方文档看怎么解决,结果一查,我的天,SDK更新了,以前是两种方式loginButton和UserSettingsFragment,而对于两种方式来说都不适合我,因为我要写sdk供别人使用,所以别人要用那种登陆按钮需要用户自己定义,而不是用facebook自己的.对于两种方式来说,由于第二种不需要开发者参与,布局按钮都是f

实现QQ、微信、新浪微博和百度第三方登录(Android Studio)

前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppKey和AppSecret Mob开放平台地址:http://www.mob.com/#/index QQ开放平台地址:http://open.qq.com/ 新浪微博开放平台地址:http://open.weibo.com/ 微信开放平台地址:https://open.weixin.qq.com/ 

Android 实现QQ、微信、新浪微博和百度第三方登录

前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppKey和AppSecret Mob开放平台地址:http://www.mob.com/#/index QQ开放平台地址:http://open.qq.com/ 新浪微博开放平台地址:http://open.weibo.com/ 微信开放平台地址:https://open.weixin.qq.com/ 

Android 集成FaceBook实现第三方登陆

一,必要准备: 上面是官方英文文档,下面详细解释一下: Facebook app : 即需要在Facebook Developer平台,创建自己的App, Facebook SDk: 添加Facebook SDK到自己的项目中, Facebook App ID: 需要得到在Facebook Developer平台创建的App 的ID. Android Key Hash: 得到Android Hash Key. Facebook Activity: 将FaceBook Activity包含在你的项

百度第三方登录

首先第三方应用要跟微信帐号合作,然后按照下面的方法操作: 目前,百度OAuth2.0支持五种获取Access Token的流程和一种刷新获取AccessToken方式,第三方可根据需求选取合适的方式: 百度授权的Access Token是有有效期的,这样会影响用户的体验和增加开发者的工作.所以平台提供了一种方式可以保证授权有效期为永久. 实现方式:返回给第三方一个月有效期的Access Token + 十年有效期的Refresh Token. 实现原理:Refresh Token的作用就是在To

微博第三方登陆接入流程

为了吸纳用户.提高网站的用户体验性,现在很多网站都采取第三方登陆,比较常用的就是微信.QQ.微博了,接下来我来分享一下微博登陆接入的过程: 开发文档:http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6 开发步骤: 1.通过新浪微博的开放平台去注册一个应用. 之后你会得到一个App Key和一个App Secret.拥有它们,你才可以申请权限. 2.在高级信息中编辑授权回调页,这里与后面代码里的回调地址要一致 3. 微博登