Android 新浪微博之如何使用Oauth2.0进行认证

使用新浪最新使用的Oauth2.0进行认证

1.下载Java版的weibo SDK ,地址http://code.google.com/p/weibo4j/downloads/list

2.下载后如何使用呢?见http://code.google.com/p/weibo4j/

使用方法:
  • 将下载后的项目导入Eclipse空间后,首先修改config.properties文件,在Config.properties里 client_ID :appkey 创建应用获取到的appkey client_SERCRET :app_secret 创建应用获取到的appsecret redirect_URI :回调地址 OAuth2的回调地址。回调地址在官方的使用方法中说明不是很明确,对应的应用回调页可在开发者登陆新浪微博开发平台之后, 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看, 应用回调页不可为空。修改后如下:
    client_ID = 3267310683          
    client_SERCRET =18eb675a3a7d23a8943de81f2294880e
    baseURL=http://api.weibo.com/2/
    redirect_URI=http://blog.csdn.net/junjunguoguo
    accessTokenURL=http://api.weibo.com/oauth2/access_token
    authorizeURL=http://api.weibo.com/oauth2/authorize

  • 然后打开weibo4j.examples.oauth2包下的OAuth4Code.java
public class OAuth4Code {
	public static void main(String [] args) throws WeiboException, IOException{
		Oauth oauth = new Oauth();
		BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
		System.out.println(oauth.authorize("code"));
		System.out.print("Hit enter when it's done.[Enter]:");
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String code = br.readLine();
		Log.logInfo("code: " + code);
		try{
			System.out.println(oauth.getAccessTokenByCode(code));
		} catch (WeiboException e) {
			if(401 == e.getStatusCode()){
				Log.logInfo("Unable to get the access token.");
			}else{
				e.printStackTrace();
			}
		}
	}

             运行后会弹出浏览器地址跳转到授权认证页面,如下图所示:

             

            点击授权按钮,会跳到http://blog.csdn.net/junjunguoguo?code=deda7afea5d4f79a58eb480db3cb0086

  • 然后在console输入code就能获取到oauth2的accesstoken

            AccessToken [accessToken=2.00yhKJ5B6lSHZD63296a6aa0Ho1DGE, expireIn=86399, refreshToken=,uid=1272951014]

  • 接下来即可调用example,再此以user/show接口为例:
         修改代码如下所示:    

public class ShowUser {

	public static void main(String[] args) {
		//String access_token = args[0];
		Weibo weibo = new Weibo();
		//将weibo.setToken(access_token);修改为
		weibo.setToken("2.00yhKJ5B6lSHZD63296a6aa0Ho1DGE");
		//String uid =  args[1];
		String uid="crystal_dreamer@sina.com";
		Users um = new Users();
		try {
			User user = um.showUserById(uid);
			Log.logInfo(user.toString());
		} catch (WeiboException e) {
			e.printStackTrace();
		}
	}

}

         测试时,出现如下异常:
         
weibo4j.model.WeiboException: 401:Authentication credentials were missing or incorrect.
 error:unsupport_protocol error_code:21320/2/users/show.json
	at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414)
	at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372)
	at weibo4j.http.HttpClient.get(HttpClient.java:204)
	at weibo4j.Users.showUserById(Users.java:29)
	at weibo4j.examples.user.ShowUser.main(ShowUser.java:20)
         查了半天又可能是自己的UID输入不正确
         百度了下发现原来自己对微博uid认识有问题,参见http://blog.sina.com.cn/s/blog_9a773e3601010zz9.html
            修改后发现仍然有问题,根据提示 unsupport_protocol error_code
            我发现原来是我将config.properties中的https修改成了http,改回之后测试成功
            在控制台中以JSON数据格式输出了我的详细信息。偷笑世界好美妙啊!!!!

     


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值