Share SDK 第三方登录

import java.util.HashMap;
import org.apache.http.Header;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.IBinder;
import android.os.Message;
import android.text.InputType;
import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.wechat.friends.Wechat;
import com.etoury.etoury.bean.User;
import com.etoury.etoury.http.Url;
import com.etoury.etoury.ui.view.ThirdLoginLoadingDialog;
import com.etoury.etoury.util.JsonUtil;
import com.etoury.etoury.util.SharedPreferencesUtil;
import com.etoury.project.R;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.mob.tools.utils.UIHandler;

public class LoginActivity extends Activity implements OnClickListener,
        Callback, PlatformActionListener {

    private EditText et_name, et_pass;

    private ImageButton homebtn;
    private LinearLayout login_share_1;
    private LinearLayout login_share_2;
    private LinearLayout login_share_3;
    private Button login;
    private Button register;
    private Button btnPasswordVisiable;
    private Platform sina;

    private static final int MSG_LOGIN = 2;
    private static final int MSG_AUTH_CANCEL = 3;
    private static final int MSG_AUTH_ERROR = 4;
    private static final int MSG_AUTH_COMPLETE = 5;
    private boolean ifThridLogin = false;
    private String thirdUserId;
    private String thirdUserName;
    private String thirdUserIcon;
    private String thirdUserGender;
    private boolean passwordVisiable = true;// 密码是否可见
    private ThirdLoginLoadingDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (passwordVisiable) {

        }
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_login);
        initView();
        // Mob平台授权
        ShareSDK.initSDK(this);

    }

    @Override
    protected void onDestroy() {
        ShareSDK.stopSDK();
        super.onDestroy();

    }

    private void initView() {

        et_name = (EditText) findViewById(R.id.login_account);
        et_pass = (EditText) findViewById(R.id.login_password);
        btnPasswordVisiable = (Button) findViewById(R.id.login_img_password_icon);

        homebtn = (ImageButton) findViewById(R.id.login_titlebar_back_tv);
        login = (Button) findViewById(R.id.login_btn);
        register = (Button) findViewById(R.id.login_bottom_btn);

        login_share_1 = (LinearLayout) findViewById(R.id.login_share_wechat);
        login_share_2 = (LinearLayout) findViewById(R.id.login_share_qq);
        login_share_3 = (LinearLayout) findViewById(R.id.login_share_sina);
        dialog = new ThirdLoginLoadingDialog(this);
        login.setOnClickListener(this);
        register.setOnClickListener(this);
        btnPasswordVisiable.setOnClickListener(this);
        homebtn.setOnClickListener(this);
        login_share_1.setOnClickListener(this);
        login_share_2.setOnClickListener(this);
        login_share_3.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.login_titlebar_back_tv:

            finish();
            break;
        case R.id.login_btn:

            String userName = et_name.getText().toString();
            String userPass = et_pass.getText().toString();

            // 判断用户名和密码是否为空,trim是去掉空白
            if (TextUtils.isEmpty(userName.trim())
                    || TextUtils.isEmpty(userPass.trim())) {
                Toast.makeText(this, "用户名或者密码不能为空", Toast.LENGTH_LONG).show();
            } else {
                // 发送请求给服务器
                // 调用:loginByAsyncHttpClientPost(userName, userPass);
                SharedPreferencesUtil.put(this, "userName", userName);
                SharedPreferencesUtil.put(this, "userPass", userPass);
                login(userName, userPass);

            }

            break;

        case R.id.login_img_password_icon:

            if (passwordVisiable) {
                btnPasswordVisiable.setBackgroundDrawable(getResources()
                        .getDrawable(R.drawable.password_icon_visiable));
                // 设置密码为可见。
                et_pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                passwordVisiable = false;
            } else {
                btnPasswordVisiable.setBackgroundDrawable(getResources()
                        .getDrawable(R.drawable.password_icon_gone));
                // 设置密码为不可见。
                et_pass.setInputType(InputType.TYPE_CLASS_TEXT
                        | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                passwordVisiable = true;
            }

            break;
        case R.id.login_bottom_btn:
            startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
            finish();
            break;
        case R.id.login_share_wechat:
            dialog.setCanceledOnTouchOutside(false);
            dialog.show();
            authorize(new Wechat(this));
            break;
        case R.id.login_share_qq:
            dialog.setCanceledOnTouchOutside(false);
            dialog.show();
            authorize(new QQ(this));
            break;
        case R.id.login_share_sina:
            dialog.setCanceledOnTouchOutside(false);
            dialog.show();
            authorize(new SinaWeibo(this));
            break;
        default:
            break;
        }

    }

    // 授权
    private void authorize(Platform plat) {
        if (plat.isValid()) {
            plat.removeAccount();
        }
        plat.setPlatformActionListener(this);
        plat.SSOSetting(false);
        plat.showUser(null);
    }

    private void thirdRegister() {
        System.out.println("0000000" + thirdUserId);
        if (thirdUserId != null) {
            AsyncHttpClient client = new AsyncHttpClient();
            RequestParams params = new RequestParams();
            params.put("thirdLoginId", thirdUserId);
            params.put("password", "111111");
            params.put("name", thirdUserName);
            params.put("image", thirdUserIcon);
            params.put("sex", thirdUserGender);

            client.post(Url.REGIST, params, new AsyncHttpResponseHandler() {

                @Override
                public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                    System.out.println("111" + new String(arg2));
                    loginParse(new String(arg2));
                }

                @Override
                public void onFailure(int arg0, Header[] arg1, byte[] arg2,
                        Throwable arg3) {
                    System.out.print("222");
                }
            });
        }

    }

    private void login(String userName, String userPass) {

        AsyncHttpClient client = new AsyncHttpClient();
        RequestParams params = new RequestParams();
        params.put("name", userName);
        params.put("password", userPass);
        System.out.println("1");
        client.post(Url.LOGIN, params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                loginParse(new String(arg2));

                System.out.println(new String(arg2));
            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2,
                    Throwable arg3) {
                Toast.makeText(getApplicationContext(), "连接失败请检查网络",
                        Toast.LENGTH_LONG).show();

            }
        });

    }

    protected void loginParse(String response) {

        User user = JsonUtil.parseJsonToBean(response, User.class);
        System.out.println("1");
        if (user.result.equals("TRUE")) {
            System.out.println("登录成功");
            SharedPreferencesUtil.put(getApplicationContext(), "loginResult",
                    user.result);

            SharedPreferencesUtil.put(getApplicationContext(), "userImage",
                    user.content.image);

            SharedPreferencesUtil.put(getApplicationContext(), "userId",
                    user.content.userId);

            SharedPreferencesUtil.put(getApplicationContext(), "sessionId",
                    user.content.sessionId);

            SharedPreferencesUtil.put(getApplicationContext(),
                    "userGetHeadimgUri", user.content.image);

            finish();

        } else {

            System.out.println("登录失败,原因为:" + user.reason);
            Toast.makeText(getApplicationContext(), "登录失败", Toast.LENGTH_SHORT)
                    .show();
            if (ifThridLogin) {
                ifThridLogin = false;
                dialog.dismiss();
            }

        }
    }

    @Override
    public boolean handleMessage(Message msg) {
        switch (msg.what) {

        case MSG_LOGIN: {
            // 登录
            Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
            System.out.println("-------登录成功--------");

        }
            break;
        case MSG_AUTH_CANCEL: {
            // 取消
            Toast.makeText(this, "取消", Toast.LENGTH_SHORT).show();
            System.out.println("-------取消--------");
            dialog.dismiss();
        }
            break;
        case MSG_AUTH_ERROR: {
            // 取消授权
            Toast.makeText(this, "授权错误", Toast.LENGTH_SHORT).show();
            System.out.println("-------授权错误--------");
            dialog.dismiss();
        }
            break;
        case MSG_AUTH_COMPLETE: {
            // 授权完成
            // Toast.makeText(this, "授权完成", Toast.LENGTH_SHORT).show();
            System.out.println("--------授权完成-------");

            dialog.setCanceledOnTouchOutside(false);
            dialog.show();
            ifThridLogin = true;
            thirdRegister();

        }
            break;
        }
        return false;
    }




}
posted @ 2015-12-14 13:33  Pace千雨  阅读(833)  评论(0编辑  收藏  举报