这段代码如何用你的客户端包实现?
HI,很感谢你上传了这个weibo客户端包,我现在正在用,但有些问题需要你解答一下,以下这段代码用你的客户端包如何实现?还是说只能用原来的weibo java sdk?谢谢
代码: import weibo4j.; import weibo4j.model.;
Oauth auth = new Oauth();
auth.parseSignedRequest(signedRequest);
if (auth.user_id !=null){
userid = auth.user_id;
Users um = new Users();
um.client.setToken(auth.access_token);
User u = um.showUserById(auth.user_id);
accesstoken = auth.user_id;
username = u.getName();
request.getSession().setAttribute("loginuserid", userid);
request.getSession().setAttribute("loginuser", username);
}
有两种方式获得微博用户的 UID:
- 通过
WeiboClient#getAccessToken()获取AccessToken的时候,可以通过SinaWeibo2AccessToken#getUid()取得 - 如果已经有AccessToken,可以通过
AccountService#getUid()来获取:
WeiboClient client = new WeiboClient(apiKey, apiSecret);
client.setAccessToken(accessToken);
AccountService accountService = client.getAccountService();
long uid = accountService.getUid();
获取用户昵称:
UserService userService = client.getUserService();
User user = userService.show(new Uid(uid)); // or userService.show(P.uid(uid));
String name = user.getScreenName();
我现在拿到的这个token是用户授权后从request里面传过来的: String signedRequest = request.getParameter("signed_request");
不是真正可以使用的token,需要将它解析后才能得到正确的token Oauth auth = new Oauth(); auth.parseSignedRequest(signedRequest);
不知道你的客户端有没有这段方法的封装实现呢?谢谢
还是不太清楚你描述的场景;另外,你说的weibo4j是指 https://code.google.com/p/weibo4j/ 这个项目吗?
是的,就是sina官方给的java sdk包。
我的是一个新浪微博站内应用,用的是从request取signed_request参数来获取token,而不是通过code来获取token。
你们的应用是使用OAuth2进行认证吗?如果是的话,微博对外只提供了Code来获取AccessToken的方式吧
是用OAuth2认证的,但是OAuth2认证有2种类型,一种是code,是针对站外应用的,一种是request_token,是针对站内应用的,sina的官网文档上没有特别说明,我也是折腾了好久才知道的。
如果没有好的办法,就只能用回sina的java sdk包了,谢谢
先不关闭,我找找看能不能实现这种方式的认证