SpringBoot+Vue实现第三方百度登录(一)

1. 百度登录介绍(测试网站:地址

百度登录包括身份认证、用户关系以及内容传播。允许用户使用百度帐号登录访问第三方网站,分享内容,同步信息。它有如下特点:

  1. 直接用百度账号登录你的应用或网站。

  2. 获得高质量百度活跃用户。

  3. 更便捷的分享到百度,提高网站信息传播力。

1.1 授权机制

  百度开放接口的调用,如发登录、获取用户基本信息、获取热门百度内容等,都是需要获取用户身份认证的。

  目前百度开放平台用户身份鉴权主要采用的是OAuth2.0。另外,为了方便开发者开发、测试自己的应用,我们还提供了开发者自身授权的身份鉴权方式,但开发者自身授权仅适用于应用所属的开发者自己调用接口。

  如果百度用户访问第三方应用网页,则第三方应用可以通过网页授权机制,来获取百度用户基本信息,进而实现自身业务功能。

接口文档

  开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。

获取途径授权流程介绍有效期
新获取Authorization Code又称Web Server Flow,适用于所有有Server端配合的应用。有效期一个月的Access Token+有效期十年的Refresh Token。
Implicit Grant又称User-Agent Flow,适用于所有无Server端配合的应用(桌面客户端需要内嵌浏览器)。有效期一个月的Access Token。
Client Credentials即采用应用公钥、密钥获取Access Token,适用于任何带server类型应用。 通过此授权方式获取Access Token仅可访问平台授权类的接口。有效期一个月的Access Token+有效期十年的Refresh Token。
Device适用于一些输入受限的设备上(如只有数码液晶显示屏的打印机、电视机等)。有效期一个月的Access Token+有效期十年的Refresh Token。
刷新Refresh TokenAccess Token刷新方式,适用于所有有Server端配合的应用 。十年刷新期限。


注意事项

  请求用户授权时百度提供了一个在 OAuth2.0 协议中没有提到的参数:display。它是用来标识不同形式的客户端所对应的不同展现形式的授权页面,其值定义如下

page:全屏形式的授权页面(默认),适用于web应用。

popup:弹框形式的授权页面,适用于桌面软件应用和web应用。

dialog:浮层形式的授权页面,只能用于站内web应用。

mobile:Iphone/Android等智能移动终端上用的授权页面,适用于Iphone/Android等智能移动终端上的应用。

tv:电视等超大显示屏使用的授权页面。

pad:IPad/Android等智能平板电脑使用的授权页面。

2. 成为开发者(官方文档

     开发者通过以下几个步骤,即可接入微博开放平台: 访问百度开发者中心官网 → 使用百度帐号登录官网 → 注册百度开发者 → 创建/管理应用 → 通过审核并获取接口权限。

2.1 注册开发者

1. 如果您已是百度用户,请您访问百度开发者中心并使用百度账号直接登录。

2. 如果您还不是百度用户,请您访问百度Passport,填写注册邮箱和密码并激活成为百度用户。

3. 访问百度开发者中心使用百度账号登录。

2.2 登录后,注册开发者 http://developer.baidu.com/user/reg#app/project 即可进入注册开发者页面,请填写相关信息进行注册。

(如直接开发者信息页,说明您已经注册过开发者,您可以跳过此步骤直接 查看第四步)。下图所示的是个人开发者注册页面:

2.3 按要求提交资料后,审核人员会进行审核,通过审核后需要进行身份验证,上传身份证信息,提交后等待审核即可。

3 网站应用及移动应用接入申请

    应用接入前,首先需进行申请,获得对应的API Key(client_id)和Secret Key(client_secret),以保证后续流程中可正确对网站与用户进行验证与授权。

3.1 创建应用

1. 注册开发者后,可以进行创建、管理应用 管理控制台 - 百度开放云平台 

2. 选择创建应用, 选择需要创建的应用类型,我们以网站应用为例, 点击“创建”按钮即可,按要求完善信息:

3. 创建工程成功后,页面跳转到工程基本信息页,即可查看应用的API Key(AK)和Secret Key (SK)。

3.2 网站信息完善

1. 点击应用右侧的“安全设置”,在高级信息中编辑授权回调页,这里与后面代码里的回调地址要一致

3.3 官网代码SDK下载(SDK示例代码下载

3.4 到此准备工作结束,网站开发流程(在下篇介绍)

3.5 每个人做的项目需求不同,可能会出现不同的问题,文章仅供参考

3.6 SpringBoot+Vue实现第三方百度登录(二)

3.7 其他第三方登录方式:第三方登录汇总

4. 源码购买

4.1 简洁版源码(淘宝店铺:爱创客网络)

只包含登录,第三方登录,跳转首页(没有菜单!),技术框架:SpringBoot+SpringSecurity+Mysql+Redis+Vue+ElementUI等

4.2 完整版本源码(淘宝店铺:爱创客网络)

测试地址(测试地址是完整版源码的):www.youyoushop.work

包含登录,注册,第三方登录,完整的系统管理模块,系统工具模块,系统监控模块,系统日志模块,个人中心等,技术框架:SpringBoot+SpringSecurity+Mysql+Redis+Vue+ElementUI等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
实现第三方qq登录,可以使用QQ互联提供的开放平台接口。具体的步骤如下: 1. 注册成为QQ互联开发者,并创建应用。在创建应用时,需要填写应用的基本信息,并获得AppID和AppKey。 2. 在Spring Boot后端项目中,使用Spring Security实现OAuth2认证。在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-client</artifactId> <version>5.3.4.RELEASE</version> </dependency> ``` 3. 在前端Vue项目中,使用Vue CLI创建项目,并安装vue-cli-plugin-qrcode实现生成二维码。在Terminal中运行以下命令: ``` vue create qq-login-demo cd qq-login-demo vue add qrcode ``` 4. 在Spring Boot后端项目中,实现OAuth2的配置。在application.yml文件中添加以下配置: ```yaml spring: security: oauth2: client: registration: qq: clientId: <your app id> clientSecret: <your app key> redirectUriTemplate: "{baseUrl}/login/oauth2/code/{registrationId}" authorizationUri: https://graph.qq.com/oauth2.0/authorize tokenUri: https://graph.qq.com/oauth2.0/token userInfoUri: https://graph.qq.com/user/get_user_info scope: - get_user_info provider: qq: authorizationUri: https://graph.qq.com/oauth2.0/authorize tokenUri: https://graph.qq.com/oauth2.0/token userInfoUri: https://graph.qq.com/user/get_user_info?oauth_consumer_key={clientId}&openid={oauthId} userNameAttribute: nickname ``` 5. 在前端Vue项目中,实现二维码生成。在App.vue文件中添加以下代码: ```vue <template> <div id="app"> <div v-if="!isLogin"> <qrcode :value="qrCodeUrl"></qrcode> </div> <div v-else> <p>{{ userInfo.nickname }}</p> <img :src="userInfo.figureurl_qq_1" alt="头像"> </div> </div> </template> <script> import QRCode from 'qrcode' export default { name: 'App', data() { return { isLogin: false, qrCodeUrl: '' } }, mounted() { this.generateQRCode() }, methods: { async generateQRCode() { const response = await this.$http.get('/qq-login/qr-code') if (response.status === 200) { this.qrCodeUrl = response.data this.isLogin = false } }, async checkLoginStatus() { const response = await this.$http.get('/qq-login/check-login-status') if (response.status === 200) { this.userInfo = response.data this.isLogin = true } } } } </script> ``` 6. 在Spring Boot后端项目中,实现二维码生成和登录状态检查。在QqLoginController.java文件中添加以下代码: ```java @RestController @RequestMapping("/qq-login") public class QqLoginController { private final OAuth2AuthorizedClientService authorizedClientService; private final RestTemplate restTemplate; @Autowired public QqLoginController(OAuth2AuthorizedClientService authorizedClientService, RestTemplate restTemplate) { this.authorizedClientService = authorizedClientService; this.restTemplate = restTemplate; } @GetMapping("/qr-code") public String generateQRCode() { String qrCodeUrl = "https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=<your app id>&redirect_uri=http://localhost:8080/login&state=<random state>"; try { qrCodeUrl = QRCode.from(qrCodeUrl).to(ImageType.PNG).withSize(250, 250).stream().collect(Collectors.toBase64String); } catch (WriterException | IOException e) { e.printStackTrace(); } return "data:image/png;base64," + qrCodeUrl; } @GetMapping("/check-login-status") public Map<String, Object> checkLoginStatus() { OAuth2AuthenticationToken authenticationToken = (OAuth2AuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); OAuth2AuthorizedClient authorizedClient = authorizedClientService.loadAuthorizedClient(authenticationToken.getAuthorizedClientRegistrationId(), authenticationToken.getName()); String accessToken = authorizedClient.getAccessToken().getTokenValue(); String openId = restTemplate.getForObject("https://graph.qq.com/oauth2.0/me?access_token=" + accessToken, String.class); openId = StringUtils.substringBetween(openId, "\"openid\":\"", "\"}"); Map<String, Object> userInfo = restTemplate.getForObject("https://graph.qq.com/user/get_user_info?access_token=" + accessToken + "&oauth_consumer_key=<your app id>&openid=" + openId, Map.class); return userInfo; } } ``` 7. 在前端Vue项目中,实现登录状态检查。在App.vue文件中添加以下代码: ```vue <script> export default { name: 'App', data() { return { isLogin: false, qrCodeUrl: '' } }, mounted() { this.generateQRCode() this.checkLoginStatus() setInterval(() => { this.checkLoginStatus() }, 3000) }, methods: { async checkLoginStatus() { const response = await this.$http.get('/qq-login/check-login-status') if (response.status === 200) { this.userInfo = response.data this.isLogin = true } } } } </script> ``` 至此,我们就成功地实现Spring Boot+Vue代码实现第三方QQ登录的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值