Advertisement
Guest User

Untitled

a guest
Sep 9th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.63 KB | None | 0 0
  1. лог FA: Logging event (FE): _e, Bundle[{_o=auto, _et=1781, _sc=MainActivity, _si=-6461661724532956786}]
  2.  
  3. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  4. private static final String TAG = "MainActivity";
  5. private static final int RC_SIGN_IN = 1;
  6. private FirebaseAuth mAuth;// общий экземпляр FirebaseAuthобъекта
  7. private FirebaseAuth.AuthStateListener mAuthListener;
  8. private EditText etEmail, etPassword;
  9. private Button btnSignIn;
  10. private SignInButton btnSignInGoogle;
  11. private TextView tvRegestration;
  12. private GoogleApiClient mGoogleApiClient;
  13. private CallbackManager mCallbackManager;
  14. private LoginButton btnSignInFacebook;
  15.  
  16. public static Intent newIntent(Context context) {
  17. return new Intent(context, MainActivity.class);
  18. }
  19.  
  20. @Override
  21. protected void onCreate(@Nullable Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. // initializing facebook SDK before setContentView - otherwise the app will crash
  24. FacebookSdk.sdkInitialize(getApplicationContext());
  25. setContentView(R.layout.activity_selection_sign_in);
  26.  
  27. Log.d(TAG, "onCreate");
  28. //facebook
  29. mCallbackManager = CallbackManager.Factory.create();
  30.  
  31. //для того что бы слушать состояние пользователя
  32. mAuth = FirebaseAuth.getInstance();//инициализация обьекта
  33. mAuthListener = new FirebaseAuth.AuthStateListener() {
  34. @Override
  35. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {//срабатывает когда пользователь вошел или вышел
  36. FirebaseUser user = firebaseAuth.getCurrentUser();
  37. if (user != null) {
  38. // User is signed in
  39. Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
  40. Intent intent = MapActivity.newIntent(MainActivity.this);
  41. startActivity(intent);
  42. } else {
  43. // User is signed out
  44. Log.d(TAG, "onAuthStateChanged:signed_out");
  45. }
  46. }
  47. };
  48.  
  49. etEmail = (EditText) findViewById(R.id.frafment_selection_sign_in_et_email);
  50. etPassword = (EditText) findViewById(R.id.frafment_selection_sign_in_et_password);
  51. btnSignIn = (Button) findViewById(R.id.frafment_selection_sign_in_btn_login);
  52. btnSignIn.setOnClickListener(this);
  53. btnSignInGoogle = (SignInButton) findViewById(R.id.btn_sign_in_google);
  54. btnSignInGoogle.setOnClickListener(this);
  55. btnSignInFacebook = (LoginButton) findViewById(R.id.frafment_selection_sign_in_btn_sign_in_facebook);
  56. btnSignInFacebook.setReadPermissions("email");
  57. tvRegestration = (TextView) findViewById(R.id.frafment_selection_sign_in_tv_regestration);
  58. tvRegestration.setOnClickListener(this);
  59. signInFacebook();
  60.  
  61. //google sign in
  62. // Configure Google Sign In
  63. //запрос пользовательских данных
  64. //GoogleSignInOptions для запроса идентификатора пользователя и базовой информации профиля
  65. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  66. .requestIdToken(getString(R.string.default_web_client_id))//передать свой клиентский идентификатор сервера к requestIdTokenметоду. Чтобы найти идентификатор клиента OAuth 2.0:
  67. .requestEmail()
  68. .build();
  69. //google sign in
  70. //методе активности входа в систему , создайте GoogleApiClientобъект с доступом к API входа в Google и указанными вами параметрами
  71. mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext())
  72. .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
  73. @Override
  74. public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  75. Log.d(TAG, "GoogleApiClient onConnectionFailed");
  76. Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show();
  77. }
  78. })
  79. .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
  80. .build();
  81. }
  82.  
  83. //добавление и удаление слушателя
  84. @Override
  85. public void onStart() {
  86. super.onStart();
  87. Log.d(TAG, "onStart");
  88. mAuth.addAuthStateListener(mAuthListener);
  89. }
  90.  
  91. @Override
  92. public void onStop() {
  93. super.onStop();
  94. Log.d(TAG, "onStop");
  95. if (mAuthListener != null) {
  96. mAuth.removeAuthStateListener(mAuthListener);
  97. }
  98. }
  99.  
  100. @Override
  101. protected void onDestroy() {
  102. super.onDestroy();
  103. Log.d(TAG, "onDestroy");
  104. }
  105.  
  106. @Override
  107. public void onClick(View v) {
  108. if (v.getId() == R.id.frafment_selection_sign_in_btn_login) {
  109. FirebaseAccount.signInAccount(this, etEmail.getText().toString(), etPassword.getText().toString());
  110.  
  111. } else if (v.getId() == R.id.btn_sign_in_google) {
  112. signInGoogle();
  113.  
  114. } else if (v.getId() == R.id.frafment_selection_sign_in_tv_regestration) {
  115. Intent intent = RegistrationActivity.newIntent(this);
  116. startActivity(intent);
  117. }
  118. }
  119.  
  120. @Override
  121. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  122. super.onActivityResult(requestCode, resultCode, data);
  123. if (resultCode != Activity.RESULT_OK) {
  124. Log.d(TAG, "resultCode != Activity.RESULT_OK");
  125. return;
  126. }
  127. Log.d(TAG, "onActivityResult");
  128. mCallbackManager.onActivityResult(requestCode, resultCode, data);
  129.  
  130. //google sign in
  131. // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
  132. if (requestCode == RC_SIGN_IN) {
  133. GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
  134. if (result.isSuccess()) {
  135. // Google Sign In was successful, authenticate with Firebase
  136. GoogleSignInAccount account = result.getSignInAccount();
  137. firebaseAuthWithGoogle(account);
  138. } else {
  139. Log.d(TAG, "Google Sign In failed");
  140. // Google Sign In failed, update UI appropriately
  141. // ...
  142. }
  143. }
  144. // Pass the activity result back to the Facebook SDK
  145. }
  146.  
  147. //google sign in
  148. //операция входа
  149. //Запуск намерения позволяет пользователю выбрать учетную запись Google для входа. Если вы запросили дополнительные возможности profile, emailи openid, пользователю также будет предложено предоставить доступ к запрошенным ресурсам
  150. private void signInGoogle() {
  151. Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  152. startActivityForResult(signInIntent, RC_SIGN_IN);
  153. }
  154.  
  155. //google sign in
  156. //пользователь успешно выполнит вход, получите идентификационный токен от GoogleSignInAccountобъекта, обменять его на учетные данные Firebase и выполнить проверку подлинности с помощью Firebase с использованием учетных данных Firebase:
  157. private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
  158. Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
  159.  
  160. AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
  161. mAuth.signInWithCredential(credential)
  162. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  163. @Override
  164. public void onComplete(@NonNull Task<AuthResult> task) {
  165. if (task.isSuccessful()) {
  166. // Sign in success, update UI with the signed-in user's information
  167. //если метод выполнен успешно можете использовать getCurrentUserметод для получения данных учетной записи пользователя
  168. Log.d(TAG, "signInWithCredential:success");
  169. // FirebaseUser user = mAuth.getCurrentUser();
  170. } else {
  171. // If sign in fails, display a message to the user.
  172. Log.w(TAG, "signInWithCredential:failure", task.getException());
  173. Toast.makeText(MainActivity.this, "Authentication failed.",
  174. Toast.LENGTH_SHORT).show();
  175. }
  176. }
  177. });
  178. }
  179.  
  180. private void signInFacebook() {
  181.  
  182. btnSignInFacebook.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
  183. //вход выполнин успешно
  184. @Override
  185. public void onSuccess(LoginResult loginResult) {
  186. // AccessToken accessToken = loginResult.getAccessToken();
  187. Profile profile = Profile.getCurrentProfile();
  188. Log.d(TAG, "facebook:onSuccess:" + loginResult + profile.getFirstName());
  189. handleFacebookAccessToken(loginResult.getAccessToken());
  190. }
  191.  
  192. //вход отменен
  193. @Override
  194. public void onCancel() {
  195. Log.d(TAG, "facebook:onCancel");
  196. }
  197.  
  198. //при входе возникла ошибка
  199. @Override
  200. public void onError(FacebookException error) {
  201. Log.d(TAG, "facebook:onError", error);
  202. }
  203. });
  204. }
  205.  
  206. //После того, как пользователь успешно выполнит вход , в методе обратного вызова LoginButtons onSuccess, получите токен доступа для пользователя с подпиской,
  207. // обменять его на учетные данные Firebase и выполнить аутентификацию с помощью Firebase с использованием учетных данных Firebase
  208. private void handleFacebookAccessToken(AccessToken token) {
  209. Log.d(TAG, "handleFacebookAccessToken:" + token);
  210.  
  211. AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
  212. mAuth.signInWithCredential(credential)
  213. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  214. @Override
  215. public void onComplete(@NonNull Task<AuthResult> task) {
  216. if (task.isSuccessful()) {
  217. // Sign in success, update UI with the signed-in user's information
  218. Log.d(TAG, "signInWithCredential:success");
  219. } else {
  220. // If sign in fails, display a message to the user.
  221. Log.w(TAG, "signInWithCredential:failure", task.getException());
  222. Toast.makeText(MainActivity.this, "Authentication failed.",
  223. Toast.LENGTH_SHORT).show();
  224. }
  225. }
  226. });
  227. }
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement