模拟登录获取新浪微博的access_token

public static AccessToken refreshToken(){
                 Properties props = new Properties();
                 try {
                         props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("sina_account.properties"));
                         String url = props.getProperty("url");/*模拟登录的地址, https://api.weibo.com/oauth2/authorize*/
                         PostMethod postMethod = new PostMethod(url);
                         postMethod.addParameter("client_id", props.getProperty("client_id"));//your client id
                         postMethod.addParameter("redirect_uri", props.getProperty("redirect_uri"));//your url
                         postMethod.addParameter("userId", props.getProperty("userId"));//需要获取微薄的use id
                         postMethod.addParameter("passwd", props.getProperty("passwd"));
                         postMethod.addParameter("isLoginSina", "0");
                         postMethod.addParameter("action", "submit");
                         postMethod.addParameter("response_type", props.getProperty("response_type"));//code
                         HttpMethodParams param = postMethod.getParams();
                         param.setContentCharset("UTF-8");
                         List<Header> headers = new ArrayList<Header>();
                         headers.add(new Header("Referer", "https://api.weibo.com/oauth2/authorize?client_id=your_client_id&redirect_uri=your_redirect_url&from=sina&response_type=code"));//伪造referer
                         headers.add(new Header("Host", "api.weibo.com"));
                         headers.add(new Header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"));
                         HttpClient client  = new HttpClient();
                         client.getHostConfiguration().getParams().setParameter("http.default-headers", headers);
                         client.executeMethod(postMethod);
                         int status = postMethod.getStatusCode();
                         if(status != 302){
                                 LOG.error("refresh token failed");
                                 return null;
                         }
                         Header location = postMethod.getResponseHeader("Location");
                         if(location != null){
                                 String retUrl = location.getValue();
                                 int begin = retUrl.indexOf("code=");
                                 if(begin != -1){
                                         int end = retUrl.indexOf("&", begin);
                                         if(end == -1)
                                                 end = retUrl.length();
                                         String code = retUrl.substring(begin+5, end);
                                         if(code != null){
                                                         AccessToken token = oauth.getAccessTokenByCode(code);
                                                         Oauth oauth = new Oauth();
                                                         return token;
                                         }
                                 }
                         }
                 } catch (FileNotFoundException e) {
                         LOG.error("error" + e);
                 } catch (IOException e) {
                         LOG.error("error" + e);
                 }
                 LOG.error("refresh token failed");
                 return null;
         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值