首页 > 代码库 > 集成第三方开放平台

集成第三方开放平台


 
目前国内常见的第三方开放平台有:
  • QQ开放平台
  • 微信开放平台
  • 新浪微博开放平台
 
我们可以通过集成这些第三方平台来实现:
  • 第三方登录
  • 内容分享到第三方平台
  • 获取第三方平台用户资源
  • ......
 
 
下面以新浪微博开放平台为例看下Java系统具体的集成步骤,QQ和微信类似,只需少许修改(具体请参考源码中示例)
 
一、注册平台账号,创建应用,填写认证回调地址(例如:http://127.0.0.1:8080/weibo/callback)
 
二、通过OAuth2认证
 
1.重定向请求,请求授权码code
/**
     * Step 1: 重定向到sina微博登录,请求授权码CODE
     * https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
     *
     * @param resp
     * @throws Exception
     */
    @RequestMapping("/weibo/login")
    public void weiboLogin(HttpServletResponse resp) throws Exception {
        String authorizeUrl = baseAuthorizeUrl + "?client_id=" + appKey + "&redirect_uri=" + redirectUri + "&response_type=code";
        resp.sendRedirect(authorizeUrl);
    }
baseAuthorizeUrl为 https://api.weibo.com/oauth2/authorize
client_id为 平台应用对应的appKey
 
2.登录回调,获取授权码code
/**
 * Step 2: 登录回调,获取Code
 *
 * @param req
 * @throws Exception
 */
@RequestMapping("/weibo/callback")
public String qqCallback(HttpServletRequest req) throws Exception {
    String code = req.getParameter("code");
    //获取Access Token,并返回给页面
    return getAccessToken(code);
}

 

3.通过 授权code获取access_token

/**
 * Step 3: 通过code获取access_token
 *
 * @param resp
 * @param code 认证码
 * @return
 * @throws Exception
 */
private String getAccessToken(String code) throws Exception {
    //拼接请求URL
    String tokenUrl = baseTokenUrl + "?client_id=" + appKey + "&client_secret=" + appSecret + "&grant_type=authorization_code&code=" + code + "&redirect_uri=" + redirectUri;

    //发送post请求,获取响应字符串
    String resp = RestHttpClient.sendHttpPostRequest(tokenUrl);

    return resp;
}

baseTokenUrl为 https://api.weibo.com/oauth2/access_token

 

4.通过token和uid调用微博api,例如查询微博用户信息

/**
 * Step 4: 根据Token和用户ID获取用户信息
 * access_token:2.00AZrTrB5jlucE809b31fc07I9H_XC, uid:1706396054
 *
 * @param access_token
 * @param uid
 * @return
 * @throws Exception
 */
@RequestMapping("/weibo/userInfo")
public String getUserInfo(String access_token, String uid) throws Exception {
    //拼接请求URL
    String userInfoUrl = baseUserInfoUrl + "?access_token=" + access_token + "&uid=" + uid;
    System.out.println(userInfoUrl);

    //发送请求,获取响应字符串
    String resp = RestHttpClient.sendHttpGetRequest(userInfoUrl);

    //返回响应字符串
    return resp;
}

baseUserInfoUrl为 https://api.weibo.com/2/users/show.json

 

源码地址:https://github.com/13babybear/bounter-openapi

集成第三方开放平台