新浪微博开发之自动获取AccessToken
来源:互联网 发布:caffe教程数据层视觉层 编辑:程序博客网 时间:2024/05/10 07:45
第一篇博客。
前段时间研究新浪微博开发,发现官方提供的SDK(java版)里获取AccessToken竟然需要手动从浏览器中复制code到命令行下才能获取AccesToken,明显很不友好啊,网上也没找到切实可行的办法,只能自己研究,用HttpClient写了个自动获取的方法,代码如下:
public AccessToken getAccessToken() throws WeiboException, IOException {Oauth oauth = new Oauth();String url="https://api.weibo.com/oauth2/authorize";HttpClient httpClient=new DefaultHttpClient();HttpPost post=new HttpPost(url);AccessToken accessToken=null;//初始化post数据List<NameValuePair> params=new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("userId", "微博账号"));params.add(new BasicNameValuePair("passwd", "密码"));params.add(new BasicNameValuePair("action", "login"));params.add(new BasicNameValuePair("display", "default"));params.add(new BasicNameValuePair("withOfficalFlag", "0"));params.add(new BasicNameValuePair("withOfficalAccount", ""));params.add(new BasicNameValuePair("scope", ""));params.add(new BasicNameValuePair("ticket", ""));params.add(new BasicNameValuePair("isLoginSina", ""));params.add(new BasicNameValuePair("response_type", "code"));params.add(new BasicNameValuePair("regCallback", "https%3A%2F%2Fapi.weibo.com%2F2%2Foauth2%2Fauthorize%3Fclient_id%3D3616023689%26response_type%3Dcode%26display%3Ddefault%26redirect_uri%3Dhttp%3A%2F%2F127.0.0.1%26from%3D%26with_cookie%3D"));params.add(new BasicNameValuePair("redirect_uri", "http://127.0.0.1"));params.add(new BasicNameValuePair("client_id", "3616023689"));params.add(new BasicNameValuePair("appkey62", "5Pph2h"));params.add(new BasicNameValuePair("state", ""));params.add(new BasicNameValuePair("verifyToken", "null"));params.add(new BasicNameValuePair("from", ""));UrlEncodedFormEntity entity;entity=new UrlEncodedFormEntity(params,"utf-8");post.setEntity(entity);post.addHeader("Referer", "https://api.weibo.com/oauth2/authorize?client_id=3616023689&redirect_uri=http://127.0.0.1&response_type=code&state=&scope=");HttpResponse response=httpClient.execute(post);String[] location=response.getLastHeader("Location").toString().split("=");String code=null;if(location.length>1){code=location[1];Log.logInfo("Code:"+code);}if(code!=null){accessToken=oauth.getAccessTokenByCode(code);Log.logInfo("Access_Token:"+accessToken.getAccessToken());}return accessToken;}因为新浪微博会将验证需要的code重定向到redirect_uri,而HttpClient貌似不支持,所以直接获取响应消息的code参数会报错。
我是通过获取响应的数据的Location值,即重定向地址来实现获取code的。这个Location的格式为redirect_uri?code=xxxxxxxx,我这里就是http://127.0.0.1?code=xxxxxxxx,通过截取Location来获取code,然后将code值传给SDK中提供的获取AccessToken的方法就可以成功获取到AccessToken了。
0 0
- 新浪微博开发之自动获取AccessToken
- 微信开发之获取accessToken
- java开发微信之accesstoken获取
- 微信企业号开发之获取AccessToken
- Java微信公众平台开发之AccessToken获取
- 微信企业号开发:获取AccessToken
- 微信开发获取AccessToken的方式
- 微信公众平台开发---获取accessToken
- JAVA微信开发:如何获取accessToken
- 新浪微博JAVA开发-保存AccessToken数据,可以作为下次登录凭证
- 获取微信 accesstoken
- 获取微信accessToken
- 使用C# .net开发微信公众号之获取AccessToken
- 微信开发模式——获取accesstoken
- 微信开发系列(四)_获取accessToken
- NET/C# 微信企业号开发获取AccessToken
- 微信公众号开发(二)获取AccessToken、jsapi_ticket
- 微信后台操作基础之获取AccessToken
- ASP.NET之Gridview的行绑定事件RowDataBound事件
- PCI驱动
- 试着开始写写博客
- J2EE系统优化
- 创建一个 sequence,并给出一个获得 sequence 号的语句
- 新浪微博开发之自动获取AccessToken
- 自定义JSP标签和生命周期
- DIV标签应用——抽号程序
- WPF非轮询方式实时更新数据库变化SqlDependency
- POJ 2985 The k-th Largest Group
- struts的工作原理
- CSS_float与文本的显示
- POJ:3321 Apple Tree
- 范围