关闭

新浪微博开发之授权用户登录的实现

标签: 新浪微博数据库buttonloginmenutoken
3219人阅读 评论(4) 收藏 举报
分类:

已授权用户再次启动应用时,我们要从数据库中读取已授权用户信息,让用户选择要登录的用户名实现登录。并从数据库中读取token和tokenSecret进行初始化accessToken,为以后获取微博数据做准备!

登录界面:

                                                                            


布局就不上代码了,比较简单,直接上代码:

package com.cloay.weibo.ui;

import java.util.HashMap;

import weibo4android.Weibo;
import weibo4android.http.AccessToken;

import com.cloay.weibo.R;
import com.cloay.weibo.bean.UserInfo;
import com.cloay.weibo.constants.OAuthConstant;
import com.cloay.weibo.db.DataHelper;
import com.cloay.weibo.service.MainService;
import com.cloay.weibo.service.Task;
import com.cloay.weibo.utils.AlertDlgUtil;
import com.cloay.weibo.utils.CheckNetUtil;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

/**
 * 已授权用户登陆界面
 * @author Cloay
 * 2012-2-20
 * 下午08:42:23
 */
public class LoginActivity extends Activity{
	private DataHelper dataHelper;    //保存用户信息的数据库
	private ImageView userIcon;       //用户头像
	private EditText userName;       //用户昵称
	private Button login;            //登录按钮
	private UserInfo userInfo ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.login);
		MainService.allActivity.add(this);
		
		System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
    	        System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);

		dataHelper = new DataHelper(this);
		userInfo = dataHelper.GetUserList(true).get(0);  //从数据库读取已授权用户信息  这里需   注意1
		System.out.println( "------userInfo: "+ userInfo);
		//生成accessToken
		AccessToken accessToken = new AccessToken(userInfo.getToken(), userInfo.getSecret());
		OAuthConstant.getInstance().setAccessToken(accessToken);
		
		userIcon = (ImageView) findViewById(R.id.user_icon);
		userIcon.setImageBitmap(userInfo.getDrawable());           //设置用户头像
		userName = (EditText) findViewById(R.id.user_Edit);
		userName.setText(userInfo.getName());                    //用户名
		login = (Button) findViewById(R.id.login);
		login.setOnClickListener(new OnClickListener() {//点击登录直接进入主页
			
			@Override
			public void onClick(View v) {
				if(CheckNetUtil.checkNet(LoginActivity.this)){ //先检查网络是否可用
					Intent intent = new Intent(LoginActivity.this, MainActivity.class);   //跳转到微博主页
					startActivity(intent);
					LoginActivity.this.finish();
				}else{
					AlertDlgUtil.alertDialogNetErr(LoginActivity.this);
				}
			}
		});
	}
	

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(Menu.FIRST, 0, 0, R.string.user_instead).setIcon(R.drawable.switchuser);
		menu.add(Menu.FIRST, 1, 1, R.string.exit_app).setIcon(R.drawable.menu_exit);
		return true;
		
	}
	
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch(item.getItemId()){
		case 0:   //切换账号,使用新账号登录
			Intent intent = new Intent(LoginActivity.this, OauthActivity.class);
			startActivity(intent);
			break;
		case 1:   //退出程序
			MainService.exitApp(LoginActivity.this);
			break;
		}
		return true;
	}
	
}

注意1:这里我只取出了第一个已授权的user,大家可取出全部让用户选择一个进行登录。

通过上述代码我们就实现了使用已授权用户登录了,通过accessToken使用Weibo类中的方法来请求API进行我们想要的操作!

有问题请留言,大家一起学习交流!

说明:转载请注明出处!

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:237691次
    • 积分:2531
    • 等级:
    • 排名:第15003名
    • 原创:55篇
    • 转载:11篇
    • 译文:2篇
    • 评论:86条
    文章分类
    最新评论