weiboclient4j icon indicating copy to clipboard operation
weiboclient4j copied to clipboard

这段代码如何用你的客户端包实现?

Open zhaozhiming opened this issue 12 years ago • 7 comments

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);
                        }

zhaozhiming avatar Jul 29 '13 12:07 zhaozhiming

有两种方式获得微博用户的 UID:

  1. 通过WeiboClient#getAccessToken()获取AccessToken的时候,可以通过SinaWeibo2AccessToken#getUid()取得
  2. 如果已经有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();

hoverruan avatar Jul 30 '13 02:07 hoverruan

我现在拿到的这个token是用户授权后从request里面传过来的: String signedRequest = request.getParameter("signed_request");

不是真正可以使用的token,需要将它解析后才能得到正确的token Oauth auth = new Oauth(); auth.parseSignedRequest(signedRequest);

不知道你的客户端有没有这段方法的封装实现呢?谢谢

zhaozhiming avatar Jul 30 '13 11:07 zhaozhiming

还是不太清楚你描述的场景;另外,你说的weibo4j是指 https://code.google.com/p/weibo4j/ 这个项目吗?

hoverruan avatar Jul 31 '13 09:07 hoverruan

是的,就是sina官方给的java sdk包。

我的是一个新浪微博站内应用,用的是从request取signed_request参数来获取token,而不是通过code来获取token。

zhaozhiming avatar Jul 31 '13 13:07 zhaozhiming

你们的应用是使用OAuth2进行认证吗?如果是的话,微博对外只提供了Code来获取AccessToken的方式吧

hoverruan avatar Aug 02 '13 03:08 hoverruan

是用OAuth2认证的,但是OAuth2认证有2种类型,一种是code,是针对站外应用的,一种是request_token,是针对站内应用的,sina的官网文档上没有特别说明,我也是折腾了好久才知道的。

如果没有好的办法,就只能用回sina的java sdk包了,谢谢

zhaozhiming avatar Aug 02 '13 07:08 zhaozhiming

先不关闭,我找找看能不能实现这种方式的认证

hoverruan avatar Aug 02 '13 08:08 hoverruan