本文共 4344 字,大约阅读时间需要 14 分钟。
今天尝试了一下使用网易微博的开放平台,在Android上开发应用。把用于Java的SDK下回来之后,用起来还有一些问题。不过后来都解决了。将loadProperties(defaultProperty, Configuration.class.getResourceAsStream("/" + t4jProps));
改成loadProperties(defaultProperty,Configuration.class.getResourceAsStream("/assets/" + t4jProps));
11、这个时候,我们来把调用方法的流程理一理。第一步,生成一个验证我们应用的URL,容易想到,这个URL里携带了应用的标识信息
第二步,调用浏览器访问这个URL,在页面中,用户设置允许我们的应用访问他的账号。设置以后,163保存了这种允许的状态。
第三步,设置完成后,用户退出浏览器,回到我们的应用,我们的应用再通过调用SDK去163那里获得AccessToken。
第四步,使用AccessToken,我们就可以调用SDK中的任意方法了,譬如验证用户,获取微博列表等。
下面我完成的这个例子的效果是,一进到应用,点击按钮去验证,验证完后,用户退出浏览器,应用显示用户的微博用户名。
上代码:
import t4j.TBlog;import t4j.TBlogException;import t4j.data.User;import t4j.http.AccessToken;import t4j.http.RequestToken;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class Welcome extends Activity implements OnClickListener{ private String verifyURL; private TextView tvTip; private TextView tvUserName; private TBlog tblog; private RequestToken requestToken; // 标志是否已验证 private int flag = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tvTip = (TextView) findViewById(R.id.tv_tip); tvUserName = (TextView) findViewById(R.id.tv_username); Button btnVerify = (Button)findViewById(R.id.btn_verify); btnVerify.setOnClickListener(this); // 设置应用信息 System.setProperty("tblog4j.oauth.consumerKey", "kKyj0SlCsEo1JSUk"); System.setProperty("tblog4j.oauth.consumerSecret", "ISjF44L9ftKzhdRsLsPI4KK22YdfB55e"); // 关掉debug,减少干扰信息 System.setProperty("tblog4j.debug", "false"); tvTip.setText("点击按钮去163验证应用"); tblog = new TBlog(); // 获取RequestToken try { requestToken = tblog.getOAuthRequestToken(); } catch (TBlogException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 获取验证URL verifyURL = requestToken.getAuthenticationURL(); } // 当用记关闭浏览器回到应用时,onResume会被执行。 // 由于onResume是常常会被执行的方法,所以设置flag标志位,保证只在验证回来时运行获取accessTocken protected void onResume(){ super.onResume(); if(flag == 1){ tvTip.setText("验证完毕,显示用户名"); AccessToken accessTocken = null; try { accessTocken = tblog.getOAuthAccessToken(requestToken); } catch (TBlogException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 可以将accessTocken保存起来,以后就不用再次获取了。 tblog.setToken(accessTocken.getToken(), accessTocken.getTokenSecret()); // 获取微博用户信息 User user = null; try { user = tblog.verifyCredentials(); } catch (TBlogException e) { // TODO Auto-generated catch block e.printStackTrace(); } tvUserName.setText(user.getName()); flag = 2; } } @Override public void onClick(View arg0) { // 调用浏览器打开URL Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_uri_browsers = Uri.parse(verifyURL); intent.setData(content_uri_browsers); intent.setClassName("com.android.browser","com.android.browser.BrowserActivity"); startActivity(intent); flag = 1; } }
上图:
转载地址:http://kldsi.baihongyu.com/