المتابعون

الجمعة، 24 أغسطس 2018

تسجيل الدخول عن طريق firebase

نموذج تسجيل الدخول









activity_main2.xml




<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#3b5999"    android:orientation="vertical">


    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="مرحباً يا .."        android:textSize="15sp"        android:layout_margin="30dp"        android:textColor="#424242"        android:layout_gravity="center_horizontal" />

    <TextView        android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_horizontal"        android:text="اهلا وسهلا .."        android:textColor="#424242"        android:textSize="25sp"        android:textStyle="bold" />

    <Button        android:id="@+id/signout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="40dp"        android:layout_marginRight="40dp"        android:layout_marginTop="80dp"        android:background="@drawable/logout" />

</LinearLayout>


activity_main.xml




<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#3b5999"    android:orientation="vertical">


    <ImageView        android:id="@+id/imageView2"        android:layout_width="70dp"        android:layout_height="70dp"        android:layout_gravity="center"        app:srcCompat="@drawable/login" />

    <LinearLayout        android:orientation="vertical"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        android:layout_marginLeft="20dp"        android:layout_marginRight="20dp"        android:layout_marginBottom="50dp"        android:padding="20dp"        android:background="#f25">

        <LinearLayout            android:orientation="vertical"            android:layout_weight="1"            android:layout_width="match_parent"            android:layout_height="wrap_content">


            <LinearLayout                android:orientation="horizontal"                android:layout_width="match_parent"                android:layout_height="wrap_content">

                <EditText                    android:text="البريد الإلكتروني"                    android:layout_width="150dp"                    android:layout_height="wrap_content"                    android:inputType="textPersonName"                    android:ems="10"                    android:layout_gravity="left"                    android:gravity="right"                    android:layout_margin="10dp"                    android:id="@+id/email" />

                <TextView                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:textSize="15sp"                    android:layout_margin="5dp"                    android:layout_gravity="center_vertical"                    android:gravity="center_vertical|right" />

            </LinearLayout>

            <LinearLayout                android:orientation="horizontal"                android:layout_width="match_parent"                android:layout_height="wrap_content">

                <EditText                    android:layout_width="150dp"                    android:layout_height="wrap_content"                    android:inputType="textPassword"                    android:ems="10"                    android:layout_gravity="left"                    android:gravity="right"                    android:layout_margin="10dp"                    android:id="@+id/password" />

                <TextView                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:text="كلمة المرور"                    android:textSize="15sp"                    android:layout_margin="5dp"                    android:layout_gravity="center_vertical"                    android:gravity="center_vertical|right" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout            android:orientation="horizontal"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:background="#f25">

            <Button                android:id="@+id/login"                android:layout_width="wrap_content"                android:layout_height="30dp"                android:text="تسجيل الدخول"                android:layout_margin="5dp"                android:paddingRight="5dp"                android:paddingLeft="5dp"                android:background="#af19" />
            <Button                android:id="@+id/signup"                android:layout_width="wrap_content"                android:layout_height="30dp"                android:text="تسجيل"                android:layout_margin="5dp"                android:paddingRight="5dp"                android:paddingLeft="5dp"                android:background="#af19" />

        </LinearLayout>


    </LinearLayout>
</LinearLayout>








MainActyivity.java




import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
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.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
import static com.bumptech.glide.request.RequestOptions.option;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.Scopes;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.OptionalPendingResult;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.plus.Plus;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.squareup.picasso.Picasso;
import java.io.FileInputStream;
import java.sql.Driver;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {
    EditText EMAIL, PASSWORD;
    Button SIGNIN, SIGNUP;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;


    @Override    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAuth = FirebaseAuth.getInstance();

        EMAIL = (EditText) findViewById(R.id.email);
        PASSWORD = (EditText) findViewById(R.id.password);
        SIGNIN = (Button) findViewById(R.id.login);
        SIGNUP = (Button) findViewById(R.id.signup);

        SIGNIN.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                if ((TextUtils.isEmpty(EMAIL.getText().toString())) && (TextUtils.isEmpty(PASSWORD.getText().toString()))) {
                    Toast.makeText(getApplicationContext(), "من فضلك تأكد من ادخال البيانات", Toast.LENGTH_SHORT).show();
                }else if (!isEmailValid(EMAIL.getText().toString())){
                    Toast.makeText(getApplicationContext(), "من فضلك أدخل بريد إلكتروني صالح", Toast.LENGTH_SHORT).show();
                } else {
                    SignIn(EMAIL.getText().toString(), PASSWORD.getText().toString());
                }

            }
        });
        SIGNUP.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                if ((TextUtils.isEmpty(EMAIL.getText().toString())) || (TextUtils.isEmpty(PASSWORD.getText().toString()))) {
                    Toast.makeText(getApplicationContext(), "من فضلك تأكد من ادخال البيانات", Toast.LENGTH_SHORT).show();
                }else if (!isEmailValid(EMAIL.getText().toString())){
                    Toast.makeText(getApplicationContext(), "من فضلك أدخل بريد إلكتروني صالح", Toast.LENGTH_SHORT).show();
                }else if (PASSWORD.getText().toString().length() < 6){
                    Toast.makeText(getApplicationContext(), "رجاءاً اختر كلمة المرور بعناية", Toast.LENGTH_SHORT).show();
                }else {
                    createAccount(EMAIL.getText().toString(), PASSWORD.getText().toString());
                }

            }
        });

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    finish();
                    startActivity(new Intent(getApplicationContext(), Main2Activity.class));
                }
            }
        };
        mAuth.addAuthStateListener(mAuthListener);


    }
    public static boolean isEmailValid(String email) {
        boolean isValid = false;

        String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
        CharSequence inputStr = email;

        Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(inputStr);
        if (matcher.matches()) {
            isValid = true;
        }
        return isValid;
    }
    private void createAccount(String email, String password) {
        mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(getApplicationContext(), "تم التسجيل بنجاح",
                                    Toast.LENGTH_SHORT).show();
                            SIGNUP.setVisibility(View.GONE);
                        }
                    }
                });
    }
    private void SignIn(String email, String password) {
        mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            finish();
                            Toast.makeText(getApplicationContext(), "تم الدخول بنجاح",
                                    Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(getApplicationContext(), Main2Activity.class));
                        }else {
                            Toast.makeText(getApplicationContext(), "يوجد خطأ في المعلومات التي تم تقديمها",
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                });
    }
}




Main2Actyivity.java




package com.android.studio;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class Main2Activity extends AppCompatActivity {

    Button SIGNOUT;
    TextView tv;

    @Override    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        tv = (TextView)findViewById(R.id.textView);
        if (user != null) {
            String email = user.getEmail();
            tv.setText(email);
        }



        SIGNOUT = (Button) findViewById(R.id.signout);
        SIGNOUT.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                FirebaseAuth.getInstance().signOut();
                finish();
                startActivity(new Intent(getApplicationContext(), MainActivity.class));
            }
        });
    }
}








build gradle project

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'        classpath 'com.google.gms:google-services:4.0.0'
        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}





build gradle module




apply plugin: 'com.android.application'
android {
    compileSdkVersion 27    defaultConfig {
        applicationId "com.android.studio"        minSdkVersion 18        targetSdkVersion 27        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }
    buildTypes {
        release {
            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'    implementation 'com.android.support:design:27.1.1'    implementation 'com.android.support.constraint:constraint-layout:1.1.2'    implementation 'com.google.android.gms:play-services-auth:12.0.1'    implementation 'com.google.firebase:firebase-messaging:12.0.1'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'    implementation 'com.google.firebase:firebase-core:16.0.0'    implementation 'com.squareup.picasso:picasso:2.5.2'    implementation 'com.github.bumptech.glide:glide:4.8.0'    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'    implementation 'com.android.volley:volley:1.0.0'    implementation 'com.google.android.gms:play-services-identity:15.0.1'    implementation 'com.google.android.gms:play-services-plus:15.0.1'    implementation 'com.google.firebase:firebase-auth:16.0.3'    implementation 'com.google.android.gms:play-services-auth:15.0.1'}
apply plugin: 'com.google.gms.google-services'




AndroidManifest.xml




<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.studio">

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.example.user.sbtags.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">
        <activity            android:name=".MainActivity"            android:label="@string/app_name"            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Home" />
        <activity android:name=".MapActivity" />
        <activity android:name=".Main2Activity"></activity>
    </application>

</manifest>




ما يجب عليك عمله

1-الذهاب الى موقع https://console.firebase.google.com/

2-انشاء مشروع جديد


3-android








4-الخانه الاولى package
لمعرفة package 
شاهد هذا الدرس
-----------------------

الخانه الثانيه اختياري

---------------------------------------------

الخانه 3 وهي ال SHA1

لمعرفة SHA1
شاهد هذا الدرس








5-تنزيل google-services.json 
ثم انسخ الملف وقم بوضعه في app


















ليست هناك تعليقات:

إرسال تعليق

اعلان