集成第三方开放平台
Posted 二十六度半
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成第三方开放平台相关的知识,希望对你有一定的参考价值。
目前国内常见的第三方开放平台有:
- 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
以上是关于集成第三方开放平台的主要内容,如果未能解决你的问题,请参考以下文章