`
king_tt
  • 浏览: 2224897 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

QQ和新浪帐号授权登录

阅读更多
package p.wy.hc.activity;


import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;

import p.wy.hc.bean.SharedPreferencesForLogin;
import p.wy.hc.util.JsonUtils;
import p.wy.hc.util.UpdateManager;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Looper;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import cn.sharesdk.framework.AbstractWeibo;
import cn.sharesdk.framework.WeiboActionListener;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qzone.QZone;

/**
 * @author yangyu
 *	功能描述:获取用户资料
 * 
 * 启动页面时传递一个int类型的字段type,用于标记获取自己的资料(type = 0)还是别人的资料(type = 1)。
 * 如果尝试获取别人的资料,示例代码会获取不同平台Share SDK的官方帐号的资料。
 * 
 * 如果资料获取成功,会通过{@link ShowInforPage}展示
 */
public class MainActivity  extends Activity implements Callback, OnClickListener,WeiboActionListener {
	
	//定义标题栏布局对象
//	private TitleLayout llTitle;
	
	private Button sinaBt,qzoneBt,logonBt;
	
	private TextView user_phone,user_psw,user_reg;
	private Handler handler;
	
	Message message = null;  
	private static final int DISMISS_PROGRESS_DIALOG = 1;  
	private ProgressDialog progressDialog = null; 
	private Button nextBt;
	private String userName;
	private String userPsw;
	private String flag="false"; //true 为登录成功
	private SharedPreferencesForLogin spflusrinfo;
	private String url;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
			
		//初始化ShareSDK
		AbstractWeibo.initSDK(this);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		handler = new Handler(this);
		setContentView(R.layout.logon_main);
//		setContentView(R.layout.logonmain);
		spflusrinfo= new SharedPreferencesForLogin(MainActivity.this,"shared_prefsusrinfo"); //user logon type			
		initView();
		
		initData();
		
		// 检查软件更新
		UpdateManager manager = new UpdateManager(MainActivity.this);
		manager.checkUpdate();
		
		initUser();
	}
	//查看本地是否有用户信息,有的话直接跳转到主页
	public void initUser(){
		String userinfo=spflusrinfo.getValue("usrinfo");
		
	}
	/**
	 * 初始化组件
	 */
	private void initView(){
		//得到按钮对象
		/******
		sinaBt    = (Button) findViewById(R.id.sina_id);
		qzoneBt   = (Button) findViewById(R.id.qq_id);
		
		user_phone=(TextView)findViewById(R.id.user_phone_number);
		user_psw=(TextView)findViewById(R.id.user_phone_psw);
		user_reg=(TextView)findViewById(R.id.user_reg);
		logonBt=(Button)findViewById(R.id.logon_btn);
		*****/
		sinaBt    = (Button) findViewById(R.id.sina_logon);
		qzoneBt   = (Button) findViewById(R.id.qq_logon);
	
	}

	
	/**
	 * 初始化数据
	 */
	private void initData(){	
		//设置监听
		sinaBt.setOnClickListener(this);
		qzoneBt.setOnClickListener(this);
		
		/****
		user_phone.setOnClickListener(this);
		user_reg.setOnClickListener(this);
		logonBt.setOnClickListener(this);
		
		user_phone.setOnFocusChangeListener(new OnFocusChangeListener() {
			
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				// TODO Auto-generated method stub
				user_phone.setBackgroundResource(R.drawable.aabb2);
				user_psw.setBackgroundResource(R.drawable.m);
			}
		});
		user_psw.setOnFocusChangeListener(new OnFocusChangeListener() {
			
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				// TODO Auto-generated method stub
				user_psw.setBackgroundResource(R.drawable.aabb1);
				user_phone.setBackgroundResource(R.drawable.n);
				user_psw.setText("");
			}
		});
		*****/
		
	}
	
	/**
	 * 点击按钮获取授权用户的资料
	 */
	@Override
	public void onClick(View v) {
		String name = null;	
		switch (v.getId()) {
		case R.id.sina_logon:
			name = SinaWeibo.NAME;
			break;
		case R.id.qq_logon:
			name = QZone.NAME;
			break;
		/***************
		switch (v.getId()) {
		case R.id.sina_id:
			name = SinaWeibo.NAME;
			break;
		case R.id.qq_id:
			name = QZone.NAME;
			break;
			
		case R.id.user_phone_number:
			user_phone.setBackgroundResource(R.drawable.aabb2);
			user_psw.setBackgroundResource(R.drawable.m);
			user_phone.setText("");
			break;
//		case R.id.user_phone_psw:
//			user_psw.setBackgroundResource(R.drawable.aabb1);
//			user_phone.setBackgroundResource(R.drawable.n);
//			user_psw.setText("");
//			break;
		case R.id.user_reg:
			Intent intentreg = new Intent();
			intentreg.setClass(MainActivity.this, RegisterInfoActivity.class);
			startActivity(intentreg);
			break;
		case R.id.logon_btn:
			userName=user_phone.getText().toString();
			userPsw=user_psw.getText().toString();
			Toast.makeText(MainActivity.this, "登录",Toast.LENGTH_SHORT).show();
			/*****
			new Thread(runnablelogon).start();
			if(flag.equals("true")){
				//登录成功跳转
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, HealthCheckActivity.class);
				intent.putExtra("userName", userName);
				startActivity(intent);
			}else{
				//登录失败
				Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_SHORT).show();
			}

			break;
			
			*****/
		}	
		
		if (name != null) {
			AbstractWeibo weibo = AbstractWeibo.getWeibo(this, name);
			weibo.setWeiboActionListener(this);
			String account = null;
			weibo.showUser(account);
			HealthCheckApplication hca=(HealthCheckApplication)this.getApplication();
			hca.weibo=weibo;
		}
	}

	/*****
	//登录验证
	private Runnable runnablelogon = new Runnable() {
		public void run() {
			Map<String, String> map = new HashMap<String, String>();
			map.put("username", userName);
			map.put("pwd", userPsw);
			map.put("dtype", "18");
			String result=HttpClientUtil.getResultData(CDefault.LOGON_URL, map);
			flag=FileUtil.getJSON(result, "authkey");  //true 为登录成功
			
		}
	};
	*****/
	public void onComplete(AbstractWeibo weibo, int action,HashMap<String, Object> res) {
		Message msg = new Message();
		msg.arg1 = 1;
		msg.arg2 = action;
		msg.obj = weibo;
		handler.sendMessage(msg);
		
		Message msg2 = new Message();
		if(weibo.getDb().getWeiboNname().equals("QZone")){
			msg2.what = 2;
		}else if(weibo.getDb().getWeiboNname().equals("SinaWeibo")){
			msg2.what = 1;
		}
		JsonUtils ju = new JsonUtils();
		String json = ju.fromHashMap(res);
		msg2.obj = ju.format(json);
		handler.sendMessage(msg2);
	}

	public void onError(AbstractWeibo weibo, int action, Throwable t) {
		t.printStackTrace();
		
		Message msg = new Message();
		msg.arg1 = 2;
		msg.arg2 = action;
		msg.obj = weibo;
		handler.sendMessage(msg);
	}

	public void onCancel(AbstractWeibo weibo, int action) {
		Message msg = new Message();
		msg.arg1 = 3;
		msg.arg2 = action;
		msg.obj = weibo;
		handler.sendMessage(msg);
	}
	
	/** 处理操作结果 */
	public boolean handleMessage(Message msg) {
		
		switch(msg.what) {
			case 1: {
				try {
					SharedPreferencesForLogin spflsina = new SharedPreferencesForLogin(this,"shared_prefssina");
					String userdata=spflsina.getValue("strsina");
					if(userdata!=null){
						Intent intent = new Intent();
						intent.setClass(MainActivity.this, HealthCheckActivity.class);
						String[] userInfo=userdata.split(",");
						intent.putExtra("userName", userInfo[0]);
						intent.putExtra("userIamage", userInfo[1]);
						url=userInfo[1];
						new ShowImgThread().start();
						//intent.putExtra("userIamage", userImg);
						intent.putExtra("weiboData", "SinaWeibo");
						spflusrinfo.putValue("Logon_Sina", "SinaWeibo");
						spflusrinfo.putValue("Logon_QQ", null);
						startActivity(intent);
					}else{
						Intent i = new Intent(this, ShowInforActivity.class);
						i.putExtra("data", String.valueOf(msg.obj));
						i.putExtra("weiboData", "SinaWeibo");
						spflusrinfo.putValue("Logon_Sina", "SinaWeibo");
						spflusrinfo.putValue("Logon_QQ", null);
						startActivity(i);
					}
				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
				}
			}
			break;
			case 2: {
				try {
					SharedPreferencesForLogin spflqq = new SharedPreferencesForLogin(this,"shared_prefsqq");
					String userdata=spflqq.getValue("strqq");
					if(userdata!=null){
						System.out.println(userdata); //直接跳转
						Intent intent = new Intent();
						intent.setClass(MainActivity.this, HealthCheckActivity.class);
						String[] userInfo=userdata.split(",");
						intent.putExtra("userName", userInfo[0]);
						intent.putExtra("userIamage", userInfo[1]);
						new ShowImgThread().start();
						intent.putExtra("weiboData", "QZone");
						//intent.putExtra("userIamage", userImg);
						spflusrinfo.putValue("Logon_Sina", null);
						spflusrinfo.putValue("Logon_QQ", "QZone");
						startActivity(intent);
						url=userInfo[1];
						new ShowImgThread().start();
					}else{
						Intent i = new Intent(this, ShowInforActivity.class);
						i.putExtra("data", String.valueOf(msg.obj));
						i.putExtra("weiboData", "QZone");
						spflusrinfo.putValue("Logon_Sina", null);
						spflusrinfo.putValue("Logon_QQ", "QZone");
						startActivity(i);
					}
				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
				}
			}
			break;
			default: {
				AbstractWeibo weibo = (AbstractWeibo) msg.obj;
				String text = MainActivity.actionToString(msg.arg2);
				switch (msg.arg1) {
					case 1: { // 成功
						text = weibo.getName() + " completed at " + text;
					}
					break;
					case 2: { // 失败
						text = weibo.getName() + " caught error at " + text;
					}
					break;
					case 3: { // 取消
						text = weibo.getName() + " canceled at " + text;
					}
					break;
				}
				//Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
			}
			break;
		}
		return false;
	}

	/**
	 * 将action转换为String
	 */
	public static String actionToString(int action) {
		switch (action) {
			case AbstractWeibo.ACTION_AUTHORIZING: return "ACTION_AUTHORIZING";
			case AbstractWeibo.ACTION_GETTING_FRIEND_LIST: return "ACTION_GETTING_FRIEND_LIST";
			case AbstractWeibo.ACTION_FOLLOWING_USER: return "ACTION_FOLLOWING_USER";
			case AbstractWeibo.ACTION_SENDING_DIRECT_MESSAGE: return "ACTION_SENDING_DIRECT_MESSAGE";
			case AbstractWeibo.ACTION_TIMELINE: return "ACTION_TIMELINE";
			case AbstractWeibo.ACTION_USER_INFOR: return "ACTION_USER_INFOR";
			case AbstractWeibo.ACTION_SHARE: return "ACTION_SHARE";
			default: {
				return "UNKNOWN";
			}
		}
	}
	
	
	/**监听对话框里面的button点击事件*/  
    DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()  
    {  
        public void onClick(DialogInterface dialog, int which)  
        {  
            switch (which)  
            {  
            case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序  
            	finish();  
            	  //这里处理退出前跳到首个加载界面后执行下面的退出
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, MainActivity.class);
				startActivity(intent);
				// 退出程序
				Intent mHomeIntent = new Intent(
						Intent.ACTION_MAIN);
				mHomeIntent.addCategory(Intent.CATEGORY_HOME);
				mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
				startActivity(mHomeIntent);
				// 第二次关闭
				android.os.Process
				.killProcess(android.os.Process.myPid());

                break;  
            case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框  
                break;  
            default:  
                break;  
            }  
        }  
    };    
    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event)  
    {  
        if (keyCode == KeyEvent.KEYCODE_BACK )  
        {  
            // 创建退出对话框  
            AlertDialog isExit = new AlertDialog.Builder(this).create();  
            // 设置对话框标题  
            isExit.setTitle("系统提示");  
            // 设置对话框消息  
            isExit.setMessage("确定要退出吗");  
            // 添加选择按钮并注册监听  
            isExit.setButton("确定", listener);  
            isExit.setButton2("取消", listener);  
            // 显示对话框  
            isExit.show();  
        }  
        return false;  
          
    }
    
    private class ShowImgThread extends Thread
    {
    	@Override
    	public void run()
    	{
    		Looper.prepare();

    		returnBitMap(url);

    		Looper.loop();
    	}

    };	
    //获取网络图片
    public void returnBitMap(String url) {   
    	URL myFileUrl = null;   
    	Bitmap bitmap = null;   
    	try {   
    		myFileUrl = new URL(url);   
    	} catch (MalformedURLException e) {   
    		e.printStackTrace();   
    	}   
    	try {   
    		if(myFileUrl!=null){
    			HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();   
    			conn.setDoInput(true);   
    			conn.connect();   
    			InputStream is = conn.getInputStream();   
    			bitmap = BitmapFactory.decodeStream(is);   
    			is.close();  
    		}
    	} catch (IOException e) {   
    		e.printStackTrace();   
    	}   
    	HealthCheckApplication applictaion=(HealthCheckApplication)this.getApplication();
    	
    	if(spflusrinfo.getValue("Logon_Sina")==null){
    		applictaion.mHeadBmQQ=bitmap;
    	}else{
    		applictaion.mHeadBmSina=bitmap;
    	}
//    	mHandler.sendEmptyMessage(DOWNLOAD_FINISH);
    } 
}






源码下载地址 :http://www.32666.com/file-600256.html

  • 大小: 54.8 KB
分享到:
评论

相关推荐

    qq和新浪微博授权登陆

    QQ和新浪微博授权登录是互联网应用中常见的用户身份验证方式,特别是在移动端。这两种授权登录机制允许用户使用已有的QQ或微博账号快速注册并登录其他第三方应用,简化了用户的账户管理流程,同时也为开发者提供了...

    UCHOME的QQ、新浪 api登录插件 技术文档

    UCHOME作为一款热门的社区建站系统,为了满足用户需求,提供了QQ和新浪的API登录插件。本文将详细介绍这个插件的安装、配置及使用过程,帮助你更好地理解和应用这一功能。 首先,我们要明白UCHOME的QQ、新浪API登录...

    腾讯QQ,新浪,网易登录API

    本文将深入探讨腾讯QQ、新浪微博和网易的登录API,以及如何在自己的网站上实现这些登录接口。 首先,腾讯QQ的开放平台(Tencent Open API)提供了QQ账号的登录服务,允许用户通过QQ账号快速登录合作网站。QQ登录API...

    腾讯QQ、新浪微博一键登录源码

    【腾讯QQ、新浪微博一键登录源码】是一种便捷的用户身份验证解决方案,它允许用户通过他们的腾讯QQ或新浪微博账号快速登录到第三方网站,而无需创建新的账户或记住额外的用户名和密码。这种技术大大提升了用户体验,...

    腾讯QQ、新浪微博一键登录源码20130508

    本资源是2013年5月8日版本的腾讯QQ与新浪微博一键登录的源码,对于开发者来说,这是一个很好的学习和参考材料。 一键登录的核心原理是基于OAuth协议,这是一种开放标准,允许用户提供一个令牌,而不是用户名和密码...

    ios 第三方登陆 QQ登录 微信登录 新浪登录

    在iOS应用开发中,集成第三方登录服务,如QQ登录、微信登录和新浪登录,是提升用户体验和方便用户快速注册及登录的重要功能。标题中的“ios 第三方登陆 QQ登录 微信登录 新浪登录”指的是在iOS应用中实现这三种常见...

    第三方登陆 qq 新浪微博

    QQ和新浪微博都是中国流行的社交媒体平台,它们提供了开放的API接口,允许开发者集成第三方登录功能。下面我们将深入探讨这个主题。 1. **QQ互联(QQ Open Platform)**:QQ互联是腾讯公司提供的一项服务,它允许...

    .net、asp.net使用qq登录,新浪微博,网易微博登录

    在.NET和ASP.NET开发中,实现QQ登录、新浪微博登录以及网易微博登录的功能是常见的社交网络集成需求。这些功能使得用户可以使用他们在社交媒体平台上的账户直接登录到你的网站,提供了便捷的用户体验并可能增加用户...

    ECMALL QQ支付宝 新浪 快捷登录

    ECMALL QQ支付宝 新浪 快捷登录是一种集成QQ、支付宝和新浪等第三方登录服务的解决方案,方便用户在电子商务平台(ECMALL)上快速注册和登录。这种集成方案简化了用户账号创建和验证的过程,提高了用户体验。以下是...

    UCHOME的QQ、新浪、人人登录插件

    UCHOME作为一款流行的社区建站系统,其QQ、新浪、人人网登录插件为用户提供了无缝对接的登录体验,极大地提升了用户体验和网站的用户注册率。本文将深入探讨这一插件的工作原理、安装配置以及使用中的注意事项。 一...

    第三方登录(QQ空间+新浪微博).zip

    在Android开发中,第三方登录是一种常见的功能,允许用户通过已有的社交账号(如QQ空间、新浪微博)快速注册或登录到应用,为用户提供便利的同时也提高了用户体验。本项目"第三方登录(QQ空间+新浪微博)"是一个针对...

    php+QQ、微信、新浪微博登录操作类

    本压缩包提供了一套PHP实现的登录操作类,支持QQ、微信和新浪微博的OAuth 2.0授权协议,以及相应的回调处理。 首先,我们来看`SaeTClientV2Model.php`和`SaeTOAuthV2Model.php`这两个文件。它们通常与新浪(Sina)的...

    QQ、新浪微博、腾讯微博、人人网、开心网、豆瓣登录接口整合

    在IT行业中,社交网络平台的登录接口整合是一个重要的议题,特别是在开发多平台应用程序时,它能让用户通过已有的社交账号快速注册和登录,提高用户体验。本文将深入探讨标题中的几个关键知识点:QQ、新浪微博、腾讯...

    ecshop 第三方登录包(qq,人人,新浪微博,支付宝快捷)

    在ECSHOP中集成QQ登录,开发者需要申请QQ互联的应用ID和应用密钥,然后配置到系统中,实现用户点击QQ登录按钮后跳转至QQ授权页面,授权成功后返回商城并自动登录。 人人网登录:人人网曾是中国知名的社交网络平台,...

    ThirdpartyLogin(QQ微信新浪微博登录)

    "ThirdpartyLogin(QQ微信新浪微博登录)"的主题聚焦于如何集成和实现使用QQ、微信和新浪微博这三大社交平台的账号进行登录的功能。以下是关于这个主题的详细知识点: 1. **OAuth协议**: 第三方登录的基础是OAuth协议...

    新浪微博OAuth授权的Java实现.pdf

    新浪微博OAuth授权的Java实现是通过使用OAuth协议和相关的OAuth库来实现的。OAuth协议使用户不需要直接向第三方应用提供用户名及密码,且使一个账户在多个网站中使用成为可能。在Java平台上实现新浪微博OAuth授权...

    swift-qq微信新浪微博分享登录非友盟封装

    "swift-qq微信新浪微博分享登录非友盟封装"这个项目提供了一种解决方案,它允许开发者在不依赖友盟(U-Union)的情况下,独立实现这三大社交平台的分享和登录功能。以下是对这个知识点的详细说明: 1. **Swift开发*...

    [QQ,新浪微博,腾讯微博,人人网,开心网,豆瓣]登录接口整合

    在互联网应用中,为了提供用户方便快捷的登录体验,开发者常常会集成多种社交网络平台的登录接口,如QQ、新浪微博、腾讯微博、人人网、开心网和豆瓣等。这些社交平台提供了API(Application Programming Interface)...

    2015最新ECSHOPQQ新浪微博支付宝登录插件utf8

    该插件通过调用腾讯开放平台的API,实现账号授权和信息同步,使ECSHOP用户能够快速便捷地访问商城。 2. **新浪微博登录插件**:新浪微博是微博服务的领头羊,拥有大量的活跃用户。ECSHOP的新浪微博登录插件允许用户...

Global site tag (gtag.js) - Google Analytics