Advertisement
Guest User

Untitled

a guest
Mar 9th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.01 KB | None | 0 0
  1. package br.com.netcriativa.umadeb.activity;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.annotation.NonNull;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.support.v7.widget.Toolbar;
  9. import android.text.TextUtils;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.widget.EditText;
  13. import android.widget.Toast;
  14. import com.facebook.AccessToken;
  15. import com.facebook.CallbackManager;
  16. import com.facebook.FacebookCallback;
  17. import com.facebook.FacebookException;
  18. import com.facebook.FacebookSdk;
  19. import com.facebook.login.LoginResult;
  20. import com.facebook.login.widget.LoginButton;
  21. import com.firebase.client.Firebase;
  22. import com.google.android.gms.tasks.OnCompleteListener;
  23. import com.google.android.gms.tasks.Task;
  24. import com.google.firebase.auth.AuthCredential;
  25. import com.google.firebase.auth.AuthResult;
  26. import com.google.firebase.auth.FacebookAuthProvider;
  27. import com.google.firebase.auth.FirebaseAuth;
  28. import com.google.firebase.auth.FirebaseUser;
  29.  
  30. import br.com.netcriativa.umadeb.R;
  31. import br.com.netcriativa.umadeb.model.User;
  32.  
  33. /**
  34. * Created by AndroidBash on 10/07/16
  35. */
  36.  
  37. public class LoginActivity extends AppCompatActivity {
  38.  
  39. private static final String TAG = "AndroidBash";
  40. public User user;
  41. private EditText email;
  42. private EditText password;
  43. private FirebaseAuth mAuth;
  44. private FirebaseAuth.AuthStateListener mAuthListener;
  45. private ProgressDialog mProgressDialog;
  46.  
  47. //Add YOUR Firebase Reference URL instead of the following URL
  48. Firebase mRef = new Firebase("https://aplicativoumadeb.firebaseio.com/users/");
  49.  
  50. //FaceBook callbackManager
  51. private CallbackManager callbackManager;
  52. //
  53.  
  54. @Override
  55. protected void onCreate(Bundle savedInstanceState) {
  56. super.onCreate(savedInstanceState);
  57. setContentView(R.layout.activity_login);
  58. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  59. setSupportActionBar(toolbar);
  60.  
  61. mAuth = FirebaseAuth.getInstance();
  62.  
  63. FirebaseUser mUser = mAuth.getCurrentUser();
  64. if (mUser != null) {
  65. // User is signed in
  66. Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  67. String uid = mAuth.getCurrentUser().getUid();
  68. String image=mAuth.getCurrentUser().getPhotoUrl().toString();
  69. intent.putExtra("user_id", uid);
  70. if(image!=null || image!=""){
  71. intent.putExtra("profile_picture",image);
  72. }
  73. startActivity(intent);
  74. finish();
  75. Log.d(TAG, "onAuthStateChanged:signed_in:" + mUser.getUid());
  76. }
  77.  
  78. mAuthListener = new FirebaseAuth.AuthStateListener() {
  79. @Override
  80. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  81. FirebaseUser mUser = firebaseAuth.getCurrentUser();
  82. if (mUser != null) {
  83. // User is signed in
  84. Log.d(TAG, "onAuthStateChanged:signed_in:" + mUser.getUid());
  85. } else {
  86. // User is signed out
  87. Log.d(TAG, "onAuthStateChanged:signed_out");
  88. }
  89.  
  90. }
  91. };
  92.  
  93. //FaceBook
  94. FacebookSdk.sdkInitialize(getApplicationContext());
  95. callbackManager = CallbackManager.Factory.create();
  96. LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login);
  97. loginButton.setReadPermissions("email", "public_profile");
  98. loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  99. @Override
  100. public void onSuccess(LoginResult loginResult) {
  101. Log.d(TAG, "facebook:onSuccess:" + loginResult);
  102. signInWithFacebook(loginResult.getAccessToken());
  103. }
  104.  
  105. @Override
  106. public void onCancel() {
  107. Log.d(TAG, "facebook:onCancel");
  108. }
  109.  
  110. @Override
  111. public void onError(FacebookException error) {
  112. Log.d(TAG, "facebook:onError", error);
  113. }
  114. });
  115. //
  116.  
  117. }
  118.  
  119. @Override
  120. protected void onStart() {
  121. super.onStart();
  122. email = (EditText) findViewById(R.id.edit_text_email_id);
  123. password = (EditText) findViewById(R.id.edit_text_password);
  124. mAuth.addAuthStateListener(mAuthListener);
  125. }
  126.  
  127. @Override
  128. public void onStop() {
  129. super.onStop();
  130. if (mAuthListener != null) {
  131. mAuth.removeAuthStateListener(mAuthListener);
  132. }
  133. }
  134.  
  135.  
  136. //FaceBook
  137. @Override
  138. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  139. super.onActivityResult(requestCode, resultCode, data);
  140. callbackManager.onActivityResult(requestCode, resultCode, data);
  141. }
  142. //
  143.  
  144. protected void setUpUser() {
  145. user = new User();
  146. user.setEmail(email.getText().toString());
  147. user.setPassword(password.getText().toString());
  148. }
  149.  
  150. public void onSignUpClicked(View view) {
  151. Intent intent = new Intent(this, SignUpActivity.class);
  152. startActivity(intent);
  153. }
  154.  
  155. public void onLoginClicked(View view) {
  156. setUpUser();
  157. signIn(email.getText().toString(), password.getText().toString());
  158. }
  159.  
  160. private void signIn(String email, String password) {
  161. Log.d(TAG, "signIn:" + email);
  162. if (!validateForm()) {
  163. return;
  164. }
  165.  
  166. showProgressDialog();
  167.  
  168. mAuth.signInWithEmailAndPassword(email, password)
  169. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  170. @Override
  171. public void onComplete(@NonNull Task<AuthResult> task) {
  172. Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());
  173.  
  174. // If sign in fails, display a message to the user. If sign in succeeds
  175. // the auth state listener will be notified and logic to handle the
  176. // signed in user can be handled in the listener.
  177. if (!task.isSuccessful()) {
  178. Log.w(TAG, "signInWithEmail", task.getException());
  179. Toast.makeText(LoginActivity.this, "Authentication failed.",
  180. Toast.LENGTH_SHORT).show();
  181. } else {
  182. Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  183. String uid = mAuth.getCurrentUser().getUid();
  184. intent.putExtra("user_id", uid);
  185. startActivity(intent);
  186. finish();
  187. }
  188.  
  189. hideProgressDialog();
  190. }
  191. });
  192. //
  193. }
  194.  
  195. private boolean validateForm() {
  196. boolean valid = true;
  197.  
  198. String userEmail = email.getText().toString();
  199. if (TextUtils.isEmpty(userEmail)) {
  200. email.setError("Required.");
  201. valid = false;
  202. } else {
  203. email.setError(null);
  204. }
  205.  
  206. String userPassword = password.getText().toString();
  207. if (TextUtils.isEmpty(userPassword)) {
  208. password.setError("Required.");
  209. valid = false;
  210. } else {
  211. password.setError(null);
  212. }
  213.  
  214. return valid;
  215. }
  216.  
  217.  
  218. private void signInWithFacebook(AccessToken token) {
  219. Log.d(TAG, "signInWithFacebook:" + token);
  220.  
  221. showProgressDialog();
  222.  
  223.  
  224. AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  225. mAuth.signInWithCredential(credential)
  226. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  227. @Override
  228. public void onComplete(@NonNull Task<AuthResult> task) {
  229. Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
  230.  
  231. // If sign in fails, display a message to the user. If sign in succeeds
  232. // the auth state listener will be notified and logic to handle the
  233. // signed in user can be handled in the listener.
  234. if (!task.isSuccessful()) {
  235. Log.w(TAG, "signInWithCredential", task.getException());
  236. Toast.makeText(LoginActivity.this, "Authentication failed.",
  237. Toast.LENGTH_SHORT).show();
  238. }else{
  239. String uid=task.getResult().getUser().getUid();
  240. String name=task.getResult().getUser().getDisplayName();
  241. String email=task.getResult().getUser().getEmail();
  242. String image=task.getResult().getUser().getPhotoUrl().toString();
  243.  
  244. //Create a new User and Save it in Firebase database
  245. User user = new User(uid,name,null,email,null);
  246.  
  247. mRef.child(uid).setValue(user);
  248.  
  249. Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  250. intent.putExtra("user_id",uid);
  251. intent.putExtra("profile_picture",image);
  252. startActivity(intent);
  253. finish();
  254. }
  255.  
  256. hideProgressDialog();
  257. }
  258. });
  259. }
  260.  
  261.  
  262. public void showProgressDialog() {
  263. if (mProgressDialog == null) {
  264. mProgressDialog = new ProgressDialog(this);
  265. mProgressDialog.setMessage(getString(R.string.loading));
  266. mProgressDialog.setIndeterminate(true);
  267. }
  268.  
  269. mProgressDialog.show();
  270. }
  271.  
  272. public void hideProgressDialog() {
  273. if (mProgressDialog != null && mProgressDialog.isShowing()) {
  274. mProgressDialog.dismiss();
  275. }
  276. }
  277.  
  278.  
  279. }
  280.  
  281. Caused by: java.lang.RuntimeException: You need to set the Android context using Firebase.setAndroidContext() before using Firebase.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement