Guest User

Untitled

a guest
Sep 22nd, 2017
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.70 KB | None | 0 0
  1. package com.example.hp.heartful;
  2.  
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.net.Uri;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.support.annotation.NonNull;
  9. import android.support.annotation.RequiresApi;
  10. import android.support.v4.app.Fragment;
  11. import android.support.v4.app.FragmentManager;
  12. import android.text.TextUtils;
  13. import android.util.Log;
  14. import android.view.LayoutInflater;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17. import android.widget.Button;
  18. import android.widget.EditText;
  19. import android.widget.ImageView;
  20. import android.widget.TextView;
  21. import android.widget.Toast;
  22.  
  23. import com.bumptech.glide.Glide;
  24. import com.bumptech.glide.load.engine.DiskCacheStrategy;
  25. import com.facebook.AccessToken;
  26. import com.facebook.CallbackManager;
  27. import com.facebook.FacebookCallback;
  28. import com.facebook.FacebookException;
  29. import com.facebook.FacebookSdk;
  30. import com.facebook.appevents.AppEventsLogger;
  31. import com.facebook.login.LoginManager;
  32. import com.facebook.login.LoginResult;
  33. import com.facebook.login.widget.LoginButton;
  34. import com.google.android.gms.auth.api.Auth;
  35. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  36. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  37. import com.google.android.gms.auth.api.signin.GoogleSignInResult;
  38. import com.google.android.gms.common.ConnectionResult;
  39. import com.google.android.gms.common.SignInButton;
  40. import com.google.android.gms.common.api.GoogleApiClient;
  41. import com.google.android.gms.tasks.OnCompleteListener;
  42. import com.google.android.gms.tasks.Task;
  43. import com.google.firebase.auth.AuthCredential;
  44. import com.google.firebase.auth.AuthResult;
  45. import com.google.firebase.auth.FacebookAuthProvider;
  46. import com.google.firebase.auth.FirebaseAuth;
  47. import com.google.firebase.auth.FirebaseAuthUserCollisionException;
  48. import com.google.firebase.auth.FirebaseUser;
  49. import com.google.firebase.auth.GoogleAuthProvider;
  50. import com.google.firebase.database.DataSnapshot;
  51. import com.google.firebase.database.DatabaseError;
  52. import com.google.firebase.database.DatabaseReference;
  53. import com.google.firebase.database.FirebaseDatabase;
  54. import com.google.firebase.database.ValueEventListener;
  55.  
  56. import de.hdodenhof.circleimageview.CircleImageView;
  57.  
  58. import static com.facebook.FacebookSdk.getApplicationContext;
  59.  
  60. /**
  61. * Created by HP INDIA on 08-Apr-17.
  62. */
  63. public class FragmentThree extends Fragment implements View.OnClickListener{
  64.  
  65. private boolean shouldRefreshOnResume = false;
  66. private boolean justRefreshed = false;
  67. private EditText email_Id;
  68. private EditText password;
  69. private SignInButton mgoogleSign;
  70. private FirebaseAuth mAuth;
  71. private static final int RC_SIGN_IN=1;
  72. private GoogleApiClient mGoogleApiClient;
  73. private EditText User_Name;
  74. private Button Sign_Up;
  75. private FirebaseUser firebaseUser;
  76. private DatabaseReference forUsers;
  77. private TextView login_Text;
  78. private FirebaseAuth.AuthStateListener mAuthStateListener;
  79. private ProgressDialog progress;
  80. private ProgressDialog fbProgress;
  81. private static String TAG="FragmentThree";
  82. private LoginButton mFbLogin;
  83. private ImageView edit;
  84. private String profilePicLink;
  85. private String profileName;
  86. private TextView userName;
  87. private CircleImageView profilePic;
  88. private DatabaseReference userInfo;
  89. private CallbackManager callbackManager;
  90. View view;
  91. View view_pro;
  92. private ProgressDialog progressDialog;
  93.  
  94.  
  95. @RequiresApi(api = Build.VERSION_CODES.CUPCAKE)
  96.  
  97. @Override
  98. public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
  99. view = inflater.inflate(R.layout.sign_up_page,container, false);
  100. view_pro = inflater.inflate(R.layout.profile_layout,container, false);
  101. fbProgress= new ProgressDialog(getActivity());
  102. userInfo=FirebaseDatabase.getInstance().getReference().child("Users");
  103. profilePic=(CircleImageView) view_pro.findViewById(R.id.profile_pic);
  104. userName=(TextView)view_pro.findViewById(R.id.user_name);
  105. edit=(ImageView)view_pro.findViewById(R.id.edit);
  106. fbProgress.setMessage("Connecting to Facebook Account, Please wait...");
  107. mAuth=FirebaseAuth.getInstance();
  108. forUsers= FirebaseDatabase.getInstance().getReference().child("Users");
  109. FacebookSdk.sdkInitialize(getApplicationContext());
  110. AppEventsLogger.activateApp(getActivity());
  111. callbackManager= CallbackManager.Factory.create();
  112. progressDialog=new ProgressDialog(getActivity());
  113. progress=new ProgressDialog(getActivity());
  114. email_Id=(EditText)view.findViewById(R.id.email_id);
  115. progress.setMessage("Connecting to Google Account, please wait...");
  116. password=(EditText)view.findViewById(R.id.password);
  117. User_Name=(EditText)view.findViewById(R.id.User_name);
  118. Sign_Up=(Button)view.findViewById(R.id.sign_up);
  119. login_Text=(TextView)view.findViewById(R.id.login_text);
  120. Sign_Up.setOnClickListener(this);
  121. edit.setOnClickListener(this);
  122. mgoogleSign=(SignInButton)view.findViewById(R.id.google_login);
  123. login_Text.setOnClickListener(this);
  124. mFbLogin=(LoginButton)view.findViewById(R.id.fb_login);
  125.  
  126. if(mAuth.getCurrentUser()!=null) {
  127. mAuth=FirebaseAuth.getInstance();
  128. firebaseUser=mAuth.getCurrentUser();
  129. forUsers.child(firebaseUser.getUid()).addValueEventListener(new ValueEventListener() {
  130. @Override
  131. public void onDataChange(DataSnapshot dataSnapshot) {
  132. Users user = dataSnapshot.getValue(Users.class);
  133. profilePicLink = user.getProfilePicLink();
  134. profileName = user.getUserName();
  135. Glide
  136. .with(getActivity())
  137. .load(profilePicLink)
  138. .dontAnimate()
  139. .diskCacheStrategy(DiskCacheStrategy.ALL)
  140. .into(profilePic);
  141. userName.setText(profileName);
  142. }
  143.  
  144. @Override
  145. public void onCancelled(DatabaseError databaseError) {
  146.  
  147. }
  148. });
  149. }
  150.  
  151. mAuthStateListener= new FirebaseAuth.AuthStateListener() {
  152. @Override
  153. public void onAuthStateChanged(@NonNull final FirebaseAuth firebaseAuth) {
  154.  
  155. justRefreshed = false;
  156. }
  157.  
  158. };
  159.  
  160. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  161. .requestIdToken(getString(R.string.default_web_client_id))
  162. .requestEmail()
  163. .build();
  164. if(mGoogleApiClient == null || !mGoogleApiClient.isConnected()){
  165. try {
  166. mGoogleApiClient=new GoogleApiClient.Builder(getApplicationContext())
  167. .enableAutoManage(getActivity(),new GoogleApiClient.OnConnectionFailedListener() {
  168. @Override
  169. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  170. Toast.makeText(getActivity(),"You get an error", Toast.LENGTH_SHORT).show();
  171. }
  172. })
  173. .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
  174. .build();
  175. } catch (Exception e) {
  176. e.printStackTrace();
  177. }
  178. }
  179. mgoogleSign.setOnClickListener(new View.OnClickListener() {
  180. @Override
  181. public void onClick(View v) {
  182. progress.show();
  183. signIn();
  184. }
  185. });
  186.  
  187.  
  188. mFbLogin.setFragment(FragmentThree.this);
  189. mFbLogin.setReadPermissions("public_profile", "email", "user_friends");
  190. try {
  191. mFbLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  192. @Override
  193. public void onSuccess(LoginResult loginResult) {
  194. Log.v(" FragmentFacebook", "Dekhte hai chal rha hai ki nhi");
  195. fbProgress.show();
  196. handleFacebookAccessToken(loginResult.getAccessToken());
  197.  
  198. // App code
  199. //userProfile();
  200.  
  201. }
  202.  
  203. @Override
  204. public void onCancel() {
  205. Log.v("FragmentThree 2", "Dekhte hai chal rha hai ki nhi");
  206. // App code
  207. Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show();
  208. }
  209.  
  210. @Override
  211. public void onError(FacebookException exception) {
  212. Log.v("FragmentThree 3", "Dekhte hai chal rha hai ki nhi");
  213. Log.v("Exception", String.valueOf(exception));
  214. // App code
  215. }
  216. });
  217. }
  218. catch (Exception e){
  219. Log.v("FACEBOOK", "Error in the loginButton facebook");
  220. e.printStackTrace();
  221. }
  222. // }
  223.  
  224. if(mAuth.getCurrentUser()==null) {
  225. Log.v("Sign up run hoga", String.valueOf(mAuth.getCurrentUser()));
  226. Log.v("main hu"," sign up view");
  227. return view;
  228. }
  229. else {
  230. Log.v("profile run hoga",String.valueOf(mAuth.getCurrentUser()));
  231. Log.v("main hu"," profile view");
  232. return view_pro;
  233. }
  234. }
  235.  
  236.  
  237.  
  238. @Override
  239. public void onStart() {
  240. super.onStart();
  241.  
  242. mAuth.addAuthStateListener(mAuthStateListener);
  243. }
  244. // @Override
  245. // public void onDestroy() {
  246. // super.onDestroy();
  247. // mGoogleApiClient.stopAutoManage(getActivity());
  248. // mGoogleApiClient.disconnect();
  249. // }
  250.  
  251. private void signIn() {
  252. Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  253. startActivityForResult(signInIntent, RC_SIGN_IN);
  254. }
  255.  
  256. @Override
  257. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  258. super.onActivityResult(requestCode, resultCode, data);
  259. callbackManager.onActivityResult(requestCode, resultCode, data);
  260. if (requestCode == RC_SIGN_IN) {
  261. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  262. if (result.isSuccess()) {
  263. // Google Sign In was successful, authenticate with Firebase
  264. GoogleSignInAccount account = result.getSignInAccount();
  265. firebaseAuthWithGoogle(account);
  266. //progress.dismiss();
  267. }
  268.  
  269. }
  270.  
  271. }
  272.  
  273. @Override
  274. public void setMenuVisibility(final boolean visible) {
  275. mAuth = FirebaseAuth.getInstance();
  276. if (mAuth.getCurrentUser()==null) {
  277. if (visible) {
  278.  
  279. FragmentManager fm = getFragmentManager();
  280. login_dialogbox dialogFragment = new login_dialogbox();
  281. dialogFragment.show(fm, "LoginPopup");
  282.  
  283. }
  284.  
  285. super.setMenuVisibility(visible);
  286. }
  287. }
  288.  
  289.  
  290. @Override
  291. public void onClick(View view) {
  292. if(view==Sign_Up){
  293. // user will register here
  294.  
  295. registerUser();
  296. }
  297. if(view==login_Text){
  298. // login user
  299. login();
  300.  
  301. }
  302. if(mAuth.getCurrentUser()!=null) {
  303. if (view == edit) {
  304. startActivity(new Intent(getActivity(), Preferences.class));
  305. }
  306. }
  307. }
  308. //
  309. private void login(){
  310.  
  311. try{
  312. startActivity(new Intent(getActivity(), loginActivity.class));
  313. }catch (Exception e) {
  314. Log.e(TAG,Log.getStackTraceString(e));
  315. }
  316.  
  317. }
  318.  
  319. private void registerUser(){
  320. String email=email_Id.getText().toString().trim();
  321. String pass_word=password.getText().toString().trim();
  322. String user_name=User_Name.getText().toString();
  323. if(TextUtils.isEmpty(user_name)){
  324. // email is empty
  325. Toast.makeText(getActivity(),"please select a name",Toast.LENGTH_SHORT).show();
  326. return;// to stop the function from executation.
  327. }
  328.  
  329.  
  330. if(TextUtils.isEmpty(email)){
  331. // email is empty
  332. Toast.makeText(getActivity(),"please enter email",Toast.LENGTH_SHORT).show();
  333. return;
  334. // to stop the function from executation.
  335. }
  336. if(TextUtils.isEmpty(pass_word)){
  337. // email is empty
  338. Toast.makeText(getActivity(),"please enter password",Toast.LENGTH_SHORT).show();
  339. return;
  340. }
  341. // here if everything ok the user will be register
  342. progressDialog.setMessage("Registering User,please wait...");
  343. progressDialog.show();
  344. mAuth.createUserWithEmailAndPassword(email,pass_word)
  345. .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>(){
  346. @Override
  347. public void onComplete(@NonNull Task<AuthResult> task) {
  348. if (task.isSuccessful()){
  349. //show user profile
  350. Toast.makeText(getActivity(),"Registerd successfully",Toast.LENGTH_SHORT).show();
  351. justRefreshed = false;
  352. reLoad();
  353. progressDialog.dismiss();
  354. // startActivity(new Intent(getActivity(),userProfileActivity.class));
  355. // intent = new Intent(getApplicationContext(),userProfileActivity.class);
  356. // intent.putExtra("EdiTtEXTvALUE", User_Name.getText().toString());
  357. // startActivity(intent);
  358. }else {
  359. Toast.makeText(getActivity(),"could not register, pls try again Error is"+ task.getException(),Toast.LENGTH_LONG).show();
  360. progressDialog.dismiss();
  361. }
  362. }
  363. });
  364.  
  365.  
  366. }
  367.  
  368. private void handleFacebookAccessToken(AccessToken token) {
  369. AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  370. Log.v("Facebook","Calling");
  371. mAuth.signInWithCredential(credential)
  372. .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
  373. @Override
  374. public void onComplete(@NonNull Task<AuthResult> task) {
  375. if (task.isSuccessful()) {
  376. // Sign in success, update UI with the signed-in user's information
  377. // userProfile();
  378. firebaseUser=mAuth.getCurrentUser();
  379. String personName = firebaseUser.getDisplayName();
  380. Uri personPhoto = firebaseUser.getPhotoUrl();
  381. DatabaseReference userData = forUsers.child(firebaseUser.getUid());
  382. // userData.child("userName").setValue(personName);
  383. // userData.child("profilePicLink").setValue(personPhoto.toString());
  384. Users user =new Users(personName,personPhoto.toString());
  385. userData.setValue(user);
  386. Log.i(TAG, "Display Name: " + personName);
  387. Log.i(TAG, "given Name: " + personName);
  388. Log.i(TAG, "uri: " + personPhoto);
  389. Log.v(TAG, "signInWithCredential:success");
  390. Log.v(TAG, "signInWithCredential:success");
  391. justRefreshed = false;
  392. reLoad();
  393. fbProgress.dismiss();
  394.  
  395.  
  396. }
  397. else if(!task.isSuccessful()){
  398.  
  399. Log.w(TAG, "signInWithCredential", task.getException());
  400. Toast.makeText(getApplicationContext(), "Firebase Facebook login failed",
  401. Toast.LENGTH_SHORT).show();
  402.  
  403. if(task.getException() instanceof FirebaseAuthUserCollisionException) {
  404. Toast.makeText(getApplicationContext(), "User with Email id already exists, please try with another email",
  405. Toast.LENGTH_LONG).show();
  406. LoginManager.getInstance().logOut();
  407. fbProgress.dismiss();
  408. }
  409.  
  410. }
  411.  
  412. else {
  413. // If sign in fails, display a message to the user.
  414. Log.v("Facebookcheking","Dekhte hai ");
  415. Log.w(TAG, "signInWithCredential:failure", task.getException());
  416. Toast.makeText(getActivity(), "Authentication failed.",Toast.LENGTH_SHORT).show();
  417. LoginManager.getInstance().logOut();
  418. fbProgress.dismiss();
  419.  
  420. }
  421.  
  422. // ...
  423. }
  424. });
  425.  
  426. }
  427.  
  428. private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
  429. AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
  430.  
  431. mAuth.signInWithCredential(credential)
  432. .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
  433. @Override
  434. public void onComplete(@NonNull Task<AuthResult> task) {
  435. if (task.isSuccessful()) {
  436. // Sign in success, update UI with the signed-in user's information
  437. // userProfile();
  438. firebaseUser=mAuth.getCurrentUser();
  439. String personName = firebaseUser.getDisplayName();
  440. Uri personPhoto = firebaseUser.getPhotoUrl();
  441. DatabaseReference userData = forUsers.child(firebaseUser.getUid());
  442. // userData.child("userName").setValue(personName);
  443. // userData.child("profilePicLink").setValue(personPhoto.toString());
  444. Users user =new Users(personName,personPhoto.toString());
  445. userData.setValue(user);
  446. Log.i(TAG, "Display Name: " + personName);
  447. Log.i(TAG, "given Name: " + personName);
  448. Log.i(TAG, "uri: " + personPhoto);
  449. Log.v(TAG, "signInWithCredential:success");
  450. justRefreshed = false;
  451. reLoad();
  452. progress.dismiss();
  453.  
  454.  
  455. } else {
  456. // If sign in fails, display a message to the user.
  457. Log.w(TAG, "signInWithCredential:failure", task.getException());
  458. Log.v("googlecheking","Dekhte hai ");
  459. Toast.makeText(getActivity(), "Authentication failed.",Toast.LENGTH_SHORT).show();
  460. progress.dismiss();
  461.  
  462. }
  463.  
  464. // ...
  465. }
  466. });
  467. }
  468. public void reLoad(){
  469.  
  470. if(!justRefreshed) {
  471. FragmentThree fragment = (FragmentThree)
  472. getFragmentManager().getFragments().get(2);
  473. getFragmentManager().beginTransaction()
  474. .detach(fragment)
  475. .attach(fragment)
  476. .commit();
  477. shouldRefreshOnResume = false;
  478. }
  479.  
  480. justRefreshed = true;
  481. Log.v("reload done", "value of should refresh"+String.valueOf(shouldRefreshOnResume));
  482.  
  483. }
  484.  
  485. @Override
  486. public void onStop() {
  487. super.onStop();
  488. shouldRefreshOnResume = true;
  489. Log.v("value of should refresh", String.valueOf(shouldRefreshOnResume));
  490. Log.v("reload", "onStop");
  491.  
  492. }
  493.  
  494. @Override
  495. public void onResume() {
  496. super.onResume();
  497. // Check should we need to refresh the fragment
  498. if(shouldRefreshOnResume){
  499. // refresh fragment
  500. Log.v("value of should refresh", String.valueOf(shouldRefreshOnResume));
  501. Log.v("reload ing through", "onresume");
  502. reLoad();
  503. }
  504. }
  505.  
  506.  
  507. }
Add Comment
Please, Sign In to add comment