package com.dreamspace.uucampus.ui.activity.Login; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.ShareData; import com.dreamspace.uucampus.common.utils.CommonUtils; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.model.WeChatUser; import com.dreamspace.uucampus.model.api.LoginReq; import com.dreamspace.uucampus.model.api.LoginRes; import com.dreamspace.uucampus.model.api.UserInfoRes; import com.dreamspace.uucampus.ui.base.AbsActivity; import com.dreamspace.uucampus.ui.dialog.ProgressDialog; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.controller.UMServiceFactory; import com.umeng.socialize.controller.UMSocialService; import com.umeng.socialize.controller.listener.SocializeListeners; import com.umeng.socialize.exception.SocializeException; import com.umeng.socialize.sso.SinaSsoHandler; import com.umeng.socialize.sso.UMSsoHandler; import com.umeng.socialize.weixin.controller.UMWXHandler; import java.util.Map; import java.util.Set; import butterknife.Bind; import butterknife.ButterKnife; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by money on 2015/10/13. */ public class LoginActivity extends AbsActivity { @Bind(R.id.Login_userName) EditText LoginUserName; @Bind(R.id.Login_pwd) EditText LoginPwd; @Bind(R.id.login_page_loginButton) Button loginPageLoginButton; @Bind(R.id.login_page_forget) TextView loginPageForget; @Bind(R.id.login_page_register) TextView loginPageRegister; @Bind(R.id.login_page_weichat_img) ImageView loginPageWeichatImg; @Bind(R.id.login_page_weibo_img) ImageView loginPageWeiboImg; ProgressDialog progressDialog; //添加友盟第三方登录 final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login"); @Override protected int getContentView() { return R.layout.activity_login_page; } @Override protected void prepareDatas() { ButterKnife.bind(this); } @Override protected void initViews() { LoginUserName.setText(PreferenceUtils.getString(LoginActivity.this, PreferenceUtils.Key.PHONE)); // LoginPwd.setText(PreferenceUtils.getString(LoginActivity.this, PreferenceUtils.Key.PASSWORD)); progressDialog = new ProgressDialog(this); getSupportActionBar().setDisplayHomeAsUpEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(false); TextView titleTv = (TextView) mToolBar.findViewById(R.id.custom_title_tv); titleTv.setText(getString(R.string.login)); // 添加微信平台 UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this,ShareData.WechatAppId, ShareData.WechatAppSecret); wxHandler.addToSocialSDK(); initListener(); } @Override protected View getLoadingTargetView() { return null; } //设置监听器 private void initListener(){ loginPageLoginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String phoneNum = LoginUserName.getText().toString(); String password = LoginPwd.getText().toString(); if(isValid(phoneNum,password)){ LoginReq req = new LoginReq(); req.setPhone_num(phoneNum); req.setPassword(password); login(req); } } }); loginPageForget.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { readyGo(FindBackActivity.class); } }); loginPageRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { readyGo(RegisterActivity.class); } }); //微博登录 loginPageWeiboImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //设置新浪SSO handler mController.getConfig().setSsoHandler(new SinaSsoHandler()); //授权接口 mController.doOauthVerify(LoginActivity.this, SHARE_MEDIA.SINA, new SocializeListeners.UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { Log.d("TestData", "start"); } @Override public void onComplete(Bundle bundle, SHARE_MEDIA share_media) { Log.d("TestData","compete"); if (bundle != null && !TextUtils.isEmpty(bundle.getString("uid"))) { showToast("授权成功~"); showToast("获取用户数据----"); //获取access_token及用户资料 mController.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.SINA, new SocializeListeners.UMDataListener() { @Override public void onStart() { showToast("获取平台数据开始~~~~"); } @Override public void onComplete(int i, Map<String, Object> map) { if (i == 200 && map != null) { StringBuilder sb = new StringBuilder(); Set<String> keys = map.keySet(); for (String key : keys) { sb.append(key + "=" + map.get(key).toString() + "\r\n"); } Log.d("TestData", sb.toString()); } else { Log.d("TestData", "发生错误:" + i); } } }); } else { showToast("授权失败!"); } } @Override public void onError(SocializeException e, SHARE_MEDIA share_media) { Log.d("TestData","error"); } @Override public void onCancel(SHARE_MEDIA share_media) { Log.d("TestData","cancel"); } }); } }); //微信授权登录 loginPageWeichatImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mController.doOauthVerify(LoginActivity.this, SHARE_MEDIA.WEIXIN, new SocializeListeners.UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { showToast("授权开始"); progressDialog.setContent("正在授权"); progressDialog.show(); } @Override public void onComplete(final Bundle bundle, SHARE_MEDIA share_media) { progressDialog.dismiss(); //获取相关授权信息 mController.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, new SocializeListeners.UMDataListener() { @Override public void onStart() { showToast("获取平台数据开始~~~"); } @Override public void onComplete(int i, Map<String, Object> map) { showToast("授权完成"); if( i == 200 && map!= null){ StringBuilder sb = new StringBuilder(); Set<String> keys = map.keySet(); WeChatUser weChatUser = new WeChatUser(); for(String key : keys){ sb.append(key + "=" + map.get(key).toString() + "\r\n"); } weChatUser.setCity(map.get("city").toString()); weChatUser.setCountry(map.get("country").toString()); weChatUser.setHeadimgurl(map.get("headimgurl").toString()); weChatUser.setLanguage(map.get("language").toString()); weChatUser.setNickname(map.get("nickname").toString()); weChatUser.setProvince(map.get("province").toString()); weChatUser.setSex(map.get("sex").toString()); weChatUser.setOpenid(map.get("openid").toString()); weChatUser.setUnionid(map.get("unionid").toString()); weChatUser.setAccess_token(bundle.get("access_token").toString()); ShareData.weChatUser = weChatUser; //授权成功获取用户信息之后跳转到微信绑定界面 Bundle bundle1 = new Bundle(); bundle1.putParcelable(WechatActivity.WECHAT_USER,weChatUser); readyGo(WechatActivity.class,bundle1); }else{ Log.d("TestData","发生错误:"+i); } } }); } @Override public void onError(SocializeException e, SHARE_MEDIA share_media) { showToast("授权错误"); progressDialog.dismiss(); } @Override public void onCancel(SHARE_MEDIA share_media) { showToast("授权取消"); progressDialog.dismiss(); } }); } }); } //登录操作 private void login(final LoginReq loginReq){ progressDialog.setContent(getString(R.string.in_login)); progressDialog.show(); if(NetUtils.isNetworkConnected(this)){ ApiManager.getService(this.getApplicationContext()).createAccessToken(loginReq,new Callback<LoginRes>(){ @Override public void success(LoginRes loginRes, Response response) { progressDialog.dismiss(); PreferenceUtils.putString(LoginActivity.this, PreferenceUtils.Key.ACCESS, loginRes.getAccess_token()); //设置为已登录 PreferenceUtils.putBoolean(LoginActivity.this, PreferenceUtils.Key.LOGIN, true); ApiManager.clear(); getUserInfo(); } @Override public void failure(RetrofitError error) { progressDialog.dismiss(); showInnerError(error); } }); }else{ progressDialog.dismiss(); showNetWorkError(); } } //获取用户信息 private void getUserInfo() { ApiManager.getService(getApplicationContext()).getUserInfo(new Callback<UserInfoRes>() { @Override public void success(UserInfoRes userInfoRes, Response response) { if(userInfoRes != null){ saveUserInfo(userInfoRes); progressDialog.dismiss(); showToast("登录成功"); //当用户游客身份用APP时选择登录,登录成功后要给进入登录界面的activity返回一个登录成功状态,好让那个activity结束 setResult(RESULT_OK); finish(); } } @Override public void failure(RetrofitError error) { showInnerError(error); } }); } //保存用户信息到本地 private void saveUserInfo(UserInfoRes userInfoRes){ PreferenceUtils.putString(this,PreferenceUtils.Key.AVATAR,userInfoRes.getImage()); PreferenceUtils.putString(this,PreferenceUtils.Key.NAME,userInfoRes.getName()); PreferenceUtils.putString(this,PreferenceUtils.Key.ENROLL_YEAR,userInfoRes.getEnroll_year()); PreferenceUtils.putString(this,PreferenceUtils.Key.PHONE,userInfoRes.getPhone_num()); PreferenceUtils.putString(this,PreferenceUtils.Key.LOCATION,userInfoRes.getLocation()); } //输入有效性判断 private boolean isValid(String phoneNum,String pwd){ if(CommonUtils.isEmpty(phoneNum)){ showToast("请输入您的手机号码"); LoginUserName.requestFocus(); return false; } if(phoneNum.length()!=11){ showToast("请输入正确的手机号码"); LoginUserName.requestFocus(); return false; } if(CommonUtils.isEmpty(pwd)){ showToast("请输入您的密码"); return false; } return true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /**使用SSO授权必须添加如下代码 */ UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode); if(ssoHandler != null){ ssoHandler.authorizeCallBack(requestCode, resultCode, data); } } }