Advertisement
HikaruNguyen

Untitled

Mar 7th, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.71 KB | None | 0 0
  1. package vn.softdreams.easyon.ui.acc;
  2.  
  3. import android.content.Intent;
  4. import android.content.pm.PackageInfo;
  5. import android.content.pm.PackageManager;
  6. import android.content.pm.Signature;
  7. import android.os.Bundle;
  8. import android.support.design.widget.TextInputLayout;
  9. import android.util.Base64;
  10. import android.util.Log;
  11. import android.view.KeyEvent;
  12. import android.view.View;
  13. import android.view.inputmethod.EditorInfo;
  14. import android.widget.EditText;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import com.facebook.CallbackManager;
  19. import com.facebook.FacebookCallback;
  20. import com.facebook.FacebookException;
  21. import com.facebook.FacebookSdk;
  22. import com.facebook.GraphRequest;
  23. import com.facebook.GraphResponse;
  24. import com.facebook.login.LoginManager;
  25. import com.facebook.login.LoginResult;
  26. import com.google.android.gms.auth.api.Auth;
  27. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  28. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  29. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  30. import com.google.android.gms.common.ConnectionResult;
  31. import com.google.android.gms.common.api.GoogleApiClient;
  32. import com.google.android.gms.common.api.ResultCallback;
  33. import com.google.android.gms.common.api.Status;
  34.  
  35. import org.json.JSONObject;
  36.  
  37. import java.security.MessageDigest;
  38. import java.security.NoSuchAlgorithmException;
  39. import java.util.Arrays;
  40. import java.util.List;
  41.  
  42. import butterknife.Bind;
  43. import butterknife.ButterKnife;
  44. import butterknife.OnClick;
  45. import retrofit.RetrofitError;
  46. import retrofit.client.Response;
  47. import vn.softdreams.easyon.R;
  48. import vn.softdreams.easyon.common.Constants;
  49. import vn.softdreams.easyon.common.Constants.LOGIN_TYPE;
  50. import vn.softdreams.easyon.common.Storage;
  51. import vn.softdreams.easyon.common.Utils;
  52. import vn.softdreams.easyon.models.Area;
  53. import vn.softdreams.easyon.models.CustomerSignUpRequest;
  54. import vn.softdreams.easyon.models.CustomerSignUpRequestSocial;
  55. import vn.softdreams.easyon.models.LoginRequest;
  56. import vn.softdreams.easyon.models.LoginResponse;
  57. import vn.softdreams.easyon.services.CancelableCallback;
  58. import vn.softdreams.easyon.services.RestClient;
  59. import vn.softdreams.easyon.ui.AreaActivity;
  60. import vn.softdreams.easyon.ui.BaseActivity;
  61. import vn.softdreams.easyon.ui.MainActivity;
  62.  
  63. /**
  64. * Created by Administrator on 7/18/2016.
  65. */
  66. public class SignUpActivity extends BaseActivity implements GoogleApiClient.OnConnectionFailedListener {
  67.  
  68. @Bind(R.id.edt_name_sign_up)
  69. EditText mName;
  70. @Bind(R.id.edt_username_sign_up)
  71. EditText mUsername;
  72. @Bind(R.id.edt_password_sign_up)
  73. EditText mPassword;
  74. @Bind(R.id.input_name)
  75. TextInputLayout mInpName;
  76. @Bind(R.id.input_username)
  77. TextInputLayout mInpUsername;
  78. @Bind(R.id.input_password)
  79. TextInputLayout mInpPassword;
  80. private CallbackManager mManager;
  81. private GoogleApiClient mGClient;
  82.  
  83. @OnClick(R.id.sign_up_btn)
  84. void customerSignUp() {
  85. signUpCustomer();
  86. }
  87.  
  88. @OnClick(R.id.google_sign_up_button)
  89. void googleSignIn() {
  90. Intent loginIntent = Auth.GoogleSignInApi.getSignInIntent(mGClient);
  91. startActivityForResult(loginIntent, Constants.RC_SIGN_IN);
  92. }
  93.  
  94. @OnClick(R.id.fb_sign_up_button_im)
  95. void facebookSignIn() {
  96.  
  97. List<String> permissionNeeds = Arrays.asList("user_photos", "email", "user_friends");
  98. LoginManager.getInstance().logInWithReadPermissions(this, permissionNeeds);
  99.  
  100. }
  101.  
  102. @Override
  103. protected void onCreate(Bundle savedInstanceState) {
  104. super.onCreate(savedInstanceState);
  105. setContentView(R.layout.activity_sign_up);
  106. ButterKnife.bind(this);
  107. setupToolbar();
  108. setTitle(R.string.sign_up);
  109. // try {
  110. // PackageInfo info = getPackageManager().getPackageInfo(
  111. // "vn.softdreams.easyon",
  112. // PackageManager.GET_SIGNATURES);
  113. // for (Signature signature : info.signatures) {
  114. // MessageDigest md = MessageDigest.getInstance("SHA");
  115. // md.update(signature.toByteArray());
  116. // Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
  117. // }
  118. // } catch (PackageManager.NameNotFoundException e) {
  119. //
  120. // } catch (NoSuchAlgorithmException e) {
  121. //
  122. // }
  123. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  124. .requestEmail()
  125. .build();
  126.  
  127. mGClient = new GoogleApiClient.Builder(this)
  128. .enableAutoManage(this, this)
  129. .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  130. .build();
  131. mPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  132. @Override
  133. public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
  134. if (i == EditorInfo.IME_ACTION_DONE) {
  135. signUpCustomer();
  136. hideSoftInput(getCurrentFocus());
  137. return true;
  138. } else
  139. return false;
  140. }
  141. });
  142. mManager = CallbackManager.Factory.create();
  143. LoginManager.getInstance().registerCallback(mManager, new FacebookCallback<LoginResult>() {
  144. @Override
  145. public void onSuccess(LoginResult loginResult) {
  146. Log.i("#FB", loginResult.getAccessToken().getUserId());
  147. GraphRequest request = GraphRequest.newMeRequest(
  148. loginResult.getAccessToken(),
  149. new GraphRequest.GraphJSONObjectCallback() {
  150. @Override
  151. public void onCompleted(JSONObject object, GraphResponse response) {
  152. Log.v("LoginActivity", response.toString());
  153. try {
  154. String email = object.getString("email");
  155. String id = object.getString("id");
  156. String name = object.getString("name");
  157. LoginRequest loginRequest = new LoginRequest();
  158. loginRequest.setUsername(email);
  159. loginRequest.setPassword(id);
  160. loginRequest.setType(LOGIN_TYPE.SOCIAL);
  161. final CustomerSignUpRequestSocial cust = new CustomerSignUpRequestSocial();
  162. cust.setEmail(email);
  163. cust.setSocial_id(id);
  164. cust.setSocial_type(LOGIN_TYPE.SOCIAL_FB);
  165. cust.setFull_name(name);
  166. //startLogin(loginRequest);
  167. startCreateCusSocial(cust);
  168. } catch (Exception e) {
  169. e.printStackTrace();
  170. Toast.makeText(SignUpActivity.this, getString(R.string.unable_login), Toast.LENGTH_SHORT).show();
  171. }
  172. }
  173. });
  174. Bundle parameters = new Bundle();
  175. parameters.putString("fields", "id,name,email");
  176. request.setParameters(parameters);
  177. request.executeAsync();
  178. }
  179.  
  180. @Override
  181. public void onCancel() {
  182. }
  183.  
  184. @Override
  185. public void onError(FacebookException error) {
  186. Toast.makeText(SignUpActivity.this, getString(R.string.unable_login), Toast.LENGTH_SHORT).show();
  187. }
  188. });
  189. }
  190.  
  191. @Override
  192. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  193. super.onActivityResult(requestCode, resultCode, data);
  194. if (requestCode == Constants.RC_SIGN_IN) {
  195. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  196. Log.d("TAG", "handleSignInResult:" + result.isSuccess());
  197. if (result.isSuccess()) {
  198. showProcessDialog();
  199. GoogleSignInAccount account = result.getSignInAccount();
  200. LoginRequest request = new LoginRequest();
  201. request.setPassword(account.getId());
  202. request.setUsername(account.getEmail());
  203. request.setType(LOGIN_TYPE.SOCIAL);
  204.  
  205. final CustomerSignUpRequestSocial cust = new CustomerSignUpRequestSocial();
  206. cust.setEmail(account.getEmail());
  207. cust.setSocial_id(account.getId());
  208. cust.setSocial_type(LOGIN_TYPE.SOCIAL_GG);
  209. cust.setFull_name(account.getDisplayName());
  210.  
  211. startCreateCusSocial(cust);
  212. //startLogin(request);
  213.  
  214. } else {
  215. Toast.makeText(SignUpActivity.this, getString(R.string.unable_register), Toast.LENGTH_SHORT).show();
  216. }
  217. } else mManager.onActivityResult(requestCode, resultCode, data);
  218. }
  219.  
  220. @Override
  221. public void onConnectionFailed(ConnectionResult connectionResult) {
  222. }
  223.  
  224. @Override
  225. public void onBackPressed() {
  226. finish();
  227. }
  228.  
  229. private void signUpCustomer() {
  230. mInpName.setError(null);
  231. mInpUsername.setError(null);
  232. mInpPassword.setError(null);
  233. String username = mUsername.getText().toString();
  234. String password = mPassword.getText().toString();
  235. String name = mName.getText().toString();
  236. View focusView;
  237. if (!Utils.isNameValid(name)) {
  238. mInpName.setError(getString(R.string.name_not_valid));
  239. focusView = mName;
  240. focusView.requestFocus();
  241. } else if (!Utils.isEmailValid(username)) {
  242. mInpUsername.setError(getString(R.string.email_not_valid));
  243. focusView = mUsername;
  244. focusView.requestFocus();
  245. } else if (!Utils.isPasswordValid(password)) {
  246. mInpPassword.setError(getString(R.string.password_not_valid));
  247. focusView = mPassword;
  248. focusView.requestFocus();
  249. } else {
  250. showProcessDialog();
  251. final CustomerSignUpRequest customer = new CustomerSignUpRequest();
  252. customer.setEmail(username);
  253. customer.setPassword(password);
  254. customer.setFullname(name);
  255. RestClient.builder(this).createCustomer(customer, new CancelableCallback<LoginResponse>() {
  256. @Override
  257. public void onSuccess(LoginResponse loginResponse, Response response) {
  258. Storage.getInstance().setAccessToken(loginResponse.getJwt().getToken(), SignUpActivity.this);
  259. loginFinish(loginResponse.getUserId());
  260. Area area=new Area();
  261. area.setId((int) loginResponse.getAreaId());
  262. area.setName(loginResponse.getEmail());
  263. Storage.getInstance().setArea(getApplicationContext(),area);
  264. if (area.getId() != 0) {
  265. Storage.getInstance().setParentId(getApplicationContext(), area.getId());
  266. Storage.getInstance().setArea(getApplicationContext(), area);
  267.  
  268. } else {
  269. Storage.getInstance().setParentId(getApplicationContext(), area.getId());
  270. Storage.getInstance().setArea(getApplicationContext(), area);
  271. }
  272. Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  273. startActivity(intent);
  274. finish();
  275. }
  276.  
  277. @Override
  278. public void onFailure(RetrofitError error) {
  279. hideProgressDialog();
  280. Toast.makeText(SignUpActivity.this, getString(R.string.unable_register), Toast.LENGTH_SHORT).show();
  281. }
  282. });
  283.  
  284. }
  285. }
  286.  
  287. private void startLogin(LoginRequest loginRequest) {
  288. showProcessDialog();
  289. RestClient.builder(this).authorize(loginRequest, new CancelableCallback<LoginResponse>() {
  290. @Override
  291. public void onSuccess(LoginResponse loginResponse, Response response) {
  292. Storage.getInstance().setAccessToken(loginResponse.getJwt().getToken(), SignUpActivity.this);
  293. loginFinish(loginResponse.getUserId());
  294. }
  295.  
  296. @Override
  297. public void onFailure(RetrofitError error) {
  298. Toast.makeText(SignUpActivity.this, getString(R.string.unable_login), Toast.LENGTH_SHORT).show();
  299. hideProgressDialog();
  300. Auth.GoogleSignInApi.signOut(mGClient).setResultCallback(
  301. new ResultCallback<Status>() {
  302. @Override
  303. public void onResult(Status status) {
  304. // ...
  305. }
  306. });
  307. LoginManager.getInstance().logOut();
  308. }
  309. });
  310. }
  311. private void startCreateCusSocial(CustomerSignUpRequestSocial cust) {
  312. showProcessDialog();
  313. RestClient.builder(this).createCustUsingSocial(cust, new CancelableCallback<LoginResponse>() {
  314. @Override
  315. public void onSuccess(LoginResponse loginResponse, Response response) {
  316. Storage.getInstance().setAccessToken(loginResponse.getJwt().getToken(), SignUpActivity.this);
  317. loginFinish(loginResponse.getUserId());
  318. }
  319.  
  320. @Override
  321. public void onFailure(RetrofitError error) {
  322. Toast.makeText(SignUpActivity.this, getString(R.string.unable_login), Toast.LENGTH_SHORT).show();
  323. hideProgressDialog();
  324. Auth.GoogleSignInApi.signOut(mGClient).setResultCallback(
  325. new ResultCallback<Status>() {
  326. @Override
  327. public void onResult(Status status) {
  328. // ...
  329. }
  330. });
  331. LoginManager.getInstance().logOut();
  332. }
  333. });
  334. }
  335.  
  336. private void loginFinish(int mUserId) {
  337. hideProgressDialog();
  338. Storage.getInstance().setLogin(false);
  339. Intent intent = new Intent(this, AreaActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  340. Storage.getInstance().setCustomerId(this, mUserId);
  341. startActivity(intent);
  342. finish();
  343. }
  344.  
  345. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement