Java实现第三方登录--OAuth2.0新浪微博登录接入(二)

本文介绍如何利用微博Oauth2.0接口实现网站的第三方登录功能,包括在微博开放平台注册应用、获取参数及代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、完成微博平台应用注册,获取参数

1.登录微博开发平台。

2.开发者认证

3.创建应用

3.1 选择网站接入

3.2 立即接入

3.3 创建新应用

3.4  完善应用的基本信息和高级信息

 二、代码实现

 1.引导需要授权的用户到授权界面

2.用户同意授权,页面跳转

3.使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

三、总结


一、完成微博平台应用注册,获取参数

1.登录微博开发平台。

官网 新浪微博开放平台-首页

2.开发者认证

|我的应用-完成开发者认证 (审核需要2天左右时间)

3.创建应用

3.1 选择网站接入

3.2 立即接入

3.3 创建新应用

3.4  创建成功后,完善应用的基本信息和高级信息

 二、代码实现

基于web网站,0auth2.0授权码模式进行演示。完成微博登录功能的开发,这种方式可以和你的网站自身的用户系统连接更紧密。

使用微博的OAuth2.0授权接口:Connect/login - 微博API

 1.引导需要授权的用户到授权界面

package com.ss.work.controller;

import com.alibaba.fastjson.JSONObject;
import com.ss.work.util.pachong.HttpClientUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 微博相关的controller
 */
@Controller
@RequestMapping("/weibo")
public class OAuthWeiBoController {

    //引导需要授权的用户到如下地址:
    public static final String CODEURL="https://api.weibo.com/oauth2/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=REDIRECT_URI";

    //CLIENTID
    public static final String CLIENT_ID="在微博开放平台注册的APPKEY";

    //REDIRECT_URI  点击确认成功后回调的url地址
    public static final String REDIRECT_URI="http://localhost:2333/weibo/callback";
   
    /**
     * 获取授权界面地址
     * @return
     */
    @RequestMapping("/getGrantUrl")
    public String getGrantUrl(){
        //获取授权界面地址
        String codeUrl = CODEURL.
                replace("CLIENT_ID", CLIENT_ID)
                .replace("REDIRECT_URI", REDIRECT_URI);
        return "redirect:"+codeUrl;
    }


}

前端授权界面如下所示:

2.用户同意授权,页面跳转

页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

换取Access Token:

    //CLIENTID
    public static final String CLIENT_ID="在微博开放平台注册的APPKEY";

    //SECRET
    public static final String CLIENT_SECRET="在微博开放平台注册的应用所对应的AppSecret";

    //获取token的url地址
    public static final String TOKENURL="https://api.weibo.com/oauth2/access_token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code&redirect_uri=REDIRECT_URI&code=CODE";

    /**
     * 点击授权成功之后,调用这个接口
     * @param code
     * @return
     */
    @RequestMapping("/callback")
    public String callback(String code) throws Exception {
        System.out.println("获取的code:"+code);
        //获取token的url地址
        String tokenUrl = TOKENURL
                .replace("CLIENT_ID", CLIENT_ID)
                .replace("CLIENT_SECRET",CLIENT_SECRET)
                .replace("CODE",code);
        //使用HttpClientUtil工具类发送请求,返回Json字符串
        String tokenJsonStr = HttpClientUtil.httpToGet(tokenUrl);
        //把Json字符串转换为json对象
        JSONObject jsonObject= JSONObject.parseObject(tokenJsonStr);
        //获取token
        String accessToken = jsonObject.getString("access_token");
        //获取用户信息
        return accessToken ;
    }

 TOKENURL的返回值

3.使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

    //通过access_token获取用户信息的接口
    public static final String USERINFOURL="https://api.weibo.com/2/users/show.json?access_token=ACCESS_TOKEN";   
    /**
     * 获取用户信息
     */
    private String getUserInfo(String accessToken) throws Exception {
        //获取用户信息的接口
        String userInfoUrl = USERINFOURL
                .replace("ACCESS_TOKEN",accessToken);
        //使用HttpClientUtil工具类发送请求,返回Json字符串
        String tokenJsonStr = HttpClientUtil.httpToGet(userInfoUrl);
        //把Json字符串转换为json对象
        JSONObject jsonObject= JSONObject.parseObject(tokenJsonStr);
        //获取昵称
        String name = jsonObject.getString("name");
        return name;
    }

USERINFOURL返回结果:

三、总结

    事实上,登录流程远没有这么简单,当用户取消授权时就不能让其登录,程序里还没有加上这类判断,对于从未注册过的用户来说,这次登录就相当于一次注册,所以还需要以微博中用户的某些信息作为注册信息进行登录,当已经注册过的用户使用第三方登录时,要让其正常登录。

    不管是微博、微信、QQ,git等,要使用第三方登录都需要去对应的开放平台注册应用,有不足请指正,共同学习,互相进步~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值