【Android实战】实现新浪微博第三方登录获取用户信息

本来最开始研究的腾讯微博第三方登录,但腾讯微博的SDK太糟糕了,,估计他们自己都放弃了。想想也是,除了腾讯自家的应用在用腾讯微博,其他的开发者基本不去碰这块。所以马上去研究微博老大去了,平台果然强大,代码和文档一大堆,研究了半天,找点自己需要的功能,还是有点收获,先把这些记录下来,以后再慢慢研究。

目前实现的是实现第三方的登录,获取用户名显示到第三方应用上面。

主类,用到了Afinal框架

public class WbMainAct extends FinalActivity {// @ViewInject(id = R.id.login_out_button_silver, click = "myClick")LoginoutButton oauthButton;// @ViewInject(id = R.id.mytv)TextView textView;AuthInfo authInfo;@ViewInject(id = R.id.user, click = "getUser")Button userButton;@ViewInject(id = R.id.userInfo)TextView userTextView;UsersAPI userAPI;private Oauth2AccessToken mAccessToken;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.oauthlay);authInfo = new AuthInfo(getApplicationContext(), Constants.APP_KEY,Constants.REDIRECT_URL, Constants.SCOPE);oauthButton = (LoginoutButton) findViewById(R.id.login_out_button_default);textView = (TextView) findViewById(R.id.mytv);oauthButton.setWeiboAuthInfo(authInfo, new AuthListener());oauthButton.setLogoutListener(new LogOutRequestListener());final Button logoutButton = (Button) findViewById(R.id.logout_button);logoutButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(WbMainAct.this, "onClick", Toast.LENGTH_SHORT).show();new LogoutAPI(WbMainAct.this, Constants.APP_KEY,AccessTokenKeeper.readAccessToken(WbMainAct.this)).logout(new LogOutRequestListener());}});}public void getUser(View v) {mAccessToken = AccessTokenKeeper.readAccessToken(this);userAPI = new UsersAPI(this, Constants.APP_KEY, mAccessToken);if (mAccessToken != null && mAccessToken.isSessionValid()) {long uid = Long.parseLong(mAccessToken.getUid());userAPI.show(uid, mListener);} else {Toast.makeText(WbMainAct.this,R.string.weibosdk_demo_access_token_is_empty,Toast.LENGTH_LONG).show();userTextView.setText((mAccessToken == null) ? "mAccessToken = null "+ mAccessToken.isSessionValid(): "mAccessToken != null "+ mAccessToken.isSessionValid());}}private RequestListener mListener = new RequestListener() {@Overridepublic void onComplete(String response) {if (!TextUtils.isEmpty(response)) {// 调用 User#parse 将JSON串解析成User对象User user = User.parse(response);if (user != null) {Toast.makeText(WbMainAct.this,"获取User信息成功,用户昵称:" + user.screen_name,Toast.LENGTH_LONG).show();userTextView.setText(user.screen_name);} else {userTextView.setText(response);Toast.makeText(WbMainAct.this, "2:" + response,Toast.LENGTH_LONG).show();}}}@Overridepublic void onWeiboException(WeiboException e) {ErrorInfo info = ErrorInfo.parse(e.getMessage());Toast.makeText(WbMainAct.this, "3:" + info.toString(),Toast.LENGTH_LONG).show();userTextView.setText(info.toString());}};protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//if (oauthButton != null) {oauthButton.onActivityResult(requestCode, resultCode, data);}}private class LogOutRequestListener implements RequestListener {@Overridepublic void onComplete(String response) {if (!TextUtils.isEmpty(response)) {try {JSONObject obj = new JSONObject(response);String value = obj.getString("result");if ("true".equalsIgnoreCase(value)) {AccessTokenKeeper.clear(WbMainAct.this);textView.setText(R.string.weibosdk_demo_logout_success);}} catch (JSONException e) {e.printStackTrace();}}}@Overridepublic void onWeiboException(WeiboException e) {textView.setText(R.string.weibosdk_demo_logout_failed);}}private class AuthListener implements WeiboAuthListener {@Overridepublic void onComplete(Bundle values) {Toast.makeText(WbMainAct.this, "onComplete", Toast.LENGTH_SHORT).show();Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);if (accessToken != null && accessToken.isSessionValid()) {String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new java.util.Date(accessToken.getExpiresTime()));String format = getString(R.string.weibosdk_demo_token_to_string_format_1);textView.setText(String.format(format, accessToken.getToken(),date));AccessTokenKeeper.writeAccessToken(getApplicationContext(),accessToken);}}@Overridepublic void onWeiboException(WeiboException e) {Toast.makeText(WbMainAct.this, e.getMessage(), Toast.LENGTH_SHORT).show();}@Overridepublic void onCancel() {Toast.makeText(WbMainAct.this,R.string.weibosdk_demo_toast_auth_canceled,Toast.LENGTH_SHORT).show();}}}

梦想从来不会选择人,它是上天赋予每个人构建未来蓝图的神奇画笔。

【Android实战】实现新浪微博第三方登录获取用户信息

相关文章:

你感兴趣的文章:

标签云: