如何从第三方百度账号登录

前提条件:要有自己的服务器和域名(不需要经过备案)。

一,先在百度开发者中心上注册自己的账号

二,鼠标放在右上角自己账户名称上,选择进入应用管理界面,

三,创建工程:创建成功后点击基本信息,会给出API Key 和Secret Key。

四,在eclipse里新建项目venu,在项目里面新建两个jsp文件,名字分别为index.jsp和result.jsp,并新建Servlet文件,文件名为: BaiDuServlet,其中文件名可以自己随意命名。

代码如下.

将第三部中的API Key后面的值复制,粘贴在String client_id后面对应的" "里面 ;将第三部中的Secret Key后面的值复制,粘贴在String client_secret后面对应的" "里面;String redirect_uri后面 asdasd.top为自己的域名,再后面为自己在eclipse中创建的工程名和Servlet文件名。(下面是我随意写的值)

String redirect_uri = "http://www.asdasd.top/venu/BaiDuServlet";
        String client_secret = "vssASX5Y85BbLSXozG8is6NQEr2LMF0";
        String client_id = "dasDDxTXmIovXqFcbtuT3lc";

下面为BaiDuServlet代码:

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.sadweq.top/venu/BaiDuServlet";
        String client_secret = "asdasdjzxxK4ntIBj7i9w9tfIAwmCOwGA";
        String client_id = "asdasdl7whO1XfEVStrjMUpeS";
        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 {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            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 {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            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);
        request.setAttribute("message", map);
        request.getRequestDispatcher("/result.jsp").forward(request, response);

}

}

index.jsp里面代码如下:

注意 client_id为API Key值,redirect_uri为自己的新建的BaiduServlet文件名

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

result.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>
<body>
    <%=request.getAttribute("message") %>
</body>
</html>

五,在项目文件做好之后,导出到war包里

六,再在开发者中心里,打开安全设置,

根域名绑定填写自己的域名,应用服务器ip地址和服务器IP

七,用自己的服务器,将工程发布,

八,发布之后,在浏览器中打开,点击百度登录

登陆之后便会在网页返回个人信息

注:关于第三方登录所需要的jar包汇总下载

https://download.csdn.net/download/monster_ayb/10669765

第三方登录→百度第三方登录相关推荐

  1. QQ、微信、新浪微博和百度第三方登录

    对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppKey和A ...

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

    实现QQ.微信.新浪微博和百度第三方登录(Android Studio) 前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第 ...

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

    前言:  对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取App ...

  4. Django使用Social-Auth实现微信第三方网站扫码登录

    前言 之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能. 由于是刚接触Pytho ...

  5. 第三方登录(QQ登录)开发流程详解

    一.准备工作 接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. 申请appid和appkey的用途 appid :应用的唯一标 ...

  6. dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录

    织梦程序集成第三方QQ登录.微博登录.微信登录,获取QQ.微博.微信,并存储至数据库,一键注册为网站会员,不用再次填写绑定信息,方便粘贴用户更强. 织梦第三方登录效果 第三方登录插件特点 1.所有文件 ...

  7. 什么是第三方登录,第三方登录如何选择

    第三方登录不得不说的一个优势:那就是本地注册和第三方注册的选择.虽然这是一个不能称之为问题的问题,其中的心理学不得不说:做为一个app的新用户,你有两个选择:1.做一个很受欢迎的用户,注册帐号,完善信 ...

  8. Django实现微信第三方网站扫码登录

    前言 之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能. 由于是刚接触Pytho ...

  9. 详解如何进行第三方App接入微信登录

    微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...

最新文章

  1. SD-WAN的四大错误观念
  2. QFIL工具如何导出手机分区数据
  3. 在VS2010下运行Qt程序
  4. 【转载】java中泛型使用详解
  5. 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行
  6. Delphi XE5 for Android (十一)
  7. 牛客 - Shortest Common Non-Subsequence(dp+序列自动机)
  8. MySQL日期、字符串、数值型转换
  9. 关于深圳城中村小产权房,你应该知道的
  10. 作为一位75后的职场宝妈
  11. layui怎样将响应数据展示在页面_layui-table对返回的数据进行转变显示的实例
  12. 数据挖掘十大经典算法(包括各自优缺点 / 适用数据场景)
  13. 文档管理专家Aspose 2017年首季更新大合集
  14. 抖音时钟js css,JS+CSS3实现时钟效果(抖音)
  15. 智慧园区导航可视化分析平台技术方案
  16. 一张图看懂手机CPU性能——手机CPU性能天梯图
  17. Teardrop原始套接字编程
  18. arm linux 俄罗斯方块,基于ARM的俄罗斯方块游戏的开发教材.doc
  19. 全国计算机考试如何查准考证号
  20. Linux 系统进程、线程之间的爱恨纠葛

热门文章

  1. matlab编程反演S参数求电磁参数,如何通过CST仿真出来的S参数获得SRR结构的等效电磁参数...
  2. Altium Designer如何打印清晰的底层丝印
  3. 很可能中国明年就暴发经济危机
  4. 【数据结构与算法综合实验】景区信息管理系统迭代开发
  5. 软考高级 真题 2010年下半年 信息系统项目管理师 论文
  6. Java 编写de简单小游戏 -- 《Lights Off》
  7. python怎么编写视觉识别_OpenCV-Python,计算机视觉开发利器
  8. 在Linux上将12导联心电文件生成PDF格式文件
  9. WPS表格Excel:公式实现向下填充
  10. [计算机网络】【网络设备】交换机的静态路由配置