Dies ist eine Schritt-für-Schritt-Anleitung für die Android Firebase-Authentifizierung (Facebook-Authentifizierung). Es ist definitiv für mich, aber ich hoffe es hilft. Die IDE ist Android Studio.
Google Login-Authentifizierungsmethode http://qiita.com/Sert/items/1fbdbf68dd087201a57b Authentifizierungsmethode für Google, Facebook, Twitter, E-Mail und Passwort http://qiita.com/ronnnnn/items/dddf57a0369f780d8ac2
Ich habe darauf hingewiesen. Es scheint auch, dass es keinen Artikel gab, der Facebook gewidmet war, also werde ich ihn aufschreiben.
Dies wird weggelassen.
Klicken Sie auf Neue App hinzufügen.
Geben Sie dann einen geeigneten Namen in den Anzeigenamen ein. Dann erscheint eine Sicherheitsüberprüfung, damit wir sie durchbrechen können. Dann ändert sich der Bildschirm, also drücken Sie Facebook Login und dann das nächste Android.
Hast du so einen Bildschirm bekommen? Lass uns das machen. Für Android Studio
Überspringen Sie das Facebook SDK für Android. Bitte klicken Sie auf Weiter.
Importieren Sie das Facebook SDK.
build.gradle (Projekt)
build.gradle(project)
buildscript {
repositories {
jcenter()
mavenCentral()//Hier hinzufügen
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle (app)
build.gradle(app)
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'//Hier hinzufügen
}
Das ist das Ende.
package name.LoginActivity
.Nächster Speichern → Verwenden Sie diesen Paketnamen Bitte klicken. Dies ist das Ende von 3.
Ich bin Windows, also
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Klicken Sie zum Einfügen. Übrigens verwende ich Windows Bash, damit ich den Befehl keytool verwenden kann. An der Eingabeaufforderung war dies nicht möglich. Windows Bash ist praktisch, also installieren wir es.
Windows Bash-Installation http://qiita.com/Aruneko/items/c79810b0b015bebf30bb Und um ein sauberes Terminal zu machen https://www.sa-sa-ki.jp/blog/2016/12/bash-on-ubuntu-on-windows-wsl-terminal/ Es wäre schön, ein Werkzeug wie dieses zu verwenden: sonnig:
Fügen Sie das Befehlsergebnis mit ein. Speichern → Weiter
Aktivieren Sie die einmalige Anmeldung für die App Ich werde es überspringen.
Fügen Sie die Facebook App ID hinzu Folgen Sie der Beschreibung.
Fügen Sie AndroidAanifest.xml FacebookActivity hinzu Dies ist auch wie beschrieben.
Aktivieren Sie benutzerdefinierte Chrome-Registerkarten Dies ist auch wie beschrieben
Es sieht aus wie das.
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.app.oomae.hisaki.facebook">
<uses-permission android:name="android.permission.INTERNET"/>
<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">
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
</manifest>
Nun, es gibt noch mehr.
Registrieren Sie anschließend die App in Firebase und erklären Sie, dass Sie Facebook verwenden werden. Projekt hinzufügen → Projektname (beliebiger Name) → Projekt hinzufügen → Firebase zur Android-App hinzufügen
Weil es so aussieht Name des Android-Pakets: Ähnlich dem, den Sie zuvor für Entwickler in Facebook eingegeben haben
App-Spitzname: weggelassen
Signaturzertifikat zum Debuggen von SHA-1 (optional): das ist
keytool -exportcert -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Fügen Sie dies in Windows Bash ein. Drücken Sie dann die Eingabetaste und geben Sie das Passwort "android" ein.
Da es so ausgegeben wird, SHA1: hogehogelldpksvopd
Hogehogelldpksvopd Nur diesen Teil einfügen und die Anwendung registrieren. Fügen Sie als Nächstes google-services.json wie beschrieben in den Pfad ein. Spielen Sie als Nächstes wie beschrieben mit build.gradle.
build.gradle(project)
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.0'//hinzufügen
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(app)
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
}
apply plugin: 'com.google.gms.google-services'//hinzufügen
Als nächstes folgen die Authentifizierungseinstellungen.
Versuchen Sie es mit (Authentifizierung) → Anmeldemethode → Facebook Zu diesem Zeitpunkt werden Sie nach der Anwendungs-ID und der geheimen ID gefragt. Öffnen Sie Facebook erneut für Entwickler und überprüfen Sie das Dashboard.
Dies. : Muskel:
Gehen Sie dann erneut zu Firebase, geben Sie es ein und kopieren Sie den OAuth-Umleitungs-URI.
Öffnen Sie auch Facebook für Entwickler und
Klicken Sie links auf Facebook Login und fügen Sie die soeben kopierte URL in einen gültigen OAuth-Umleitungs-URI ein. Klicken Sie dann unten rechts auf Änderungen speichern.
Gehen Sie erneut zu Firebase und speichern Sie. Dies vervollständigt auch die Firebase-Seite.
Mit den oben genannten Informationen erstellen wir eine Anwendung wie Anmelden mit Anmeldeaktivität → Übergang → Abmelden mit Hauptaktivität → Übergang → ... bei der Authentifizierung mit Firebase.
Spielen Sie zuerst mit build.gradle (App)
build.gradle
compile 'com.google.firebase:firebase-core:11.0.1'
compile 'com.google.firebase:firebase-auth:11.0.1'
Stellen Sie als Nächstes sicher, dass LoginActivity zuerst in Manifest.xml aufgerufen wird.
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.app.oomae.hisaki.facebook_authentication_sample">
<uses-permission android:name="android.permission.INTERNET"/>
<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">
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
</activity>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
</manifest>
Erstellen Sie als Nächstes eine Aktivität. Die Übergangsquelle "LoginActivity.java" und das Übergangsziel "MainActivity.java".
LoginActivity.java
package ;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FacebookAuthProvider;
import com.google.firebase.auth.FirebaseAuth;
public class LoginActivity extends AppCompatActivity {
private FirebaseAuth firebaseAuth;
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get firebase instance
firebaseAuth = FirebaseAuth.getInstance();
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
// initialize facebook login button
callbackManager = CallbackManager.Factory.create();
FacebookCallback<LoginResult> facebookLoginCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
firebaseAuthWithFacebook(loginResult.getAccessToken());
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
if (error != null) {
DialogManager.createDialog(LoginActivity.this, error).show();
}
}
};
LoginButton facebookLoginButton = (LoginButton) findViewById(R.id.login_button);
facebookLoginButton.setReadPermissions("email", "public_profile");
facebookLoginButton.registerCallback(callbackManager, facebookLoginCallback);
}
private void firebaseAuthWithFacebook(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
changeActivity();
} else {
Toast.makeText(LoginActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
private void changeActivity() {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
}
//FaceBook
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
MainActivity.java
package ;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.facebook.login.LoginManager;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.logoutButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LoginManager.getInstance().logOut();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
});
}
}
Erstellen Sie eine Datei, um den Dialog zu verwalten.
DialogManager.java
package ;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
public class DialogManager {
static AlertDialog createDialog(Context context, String message) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
alertDialog.setMessage(message);
alertDialog.setPositiveButton("dialog close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int id) {
dialogInterface.dismiss();
}
});
return alertDialog.create();
}
static AlertDialog createDialog(Context context, Throwable throwable) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
alertDialog.setMessage(throwable.getMessage());
alertDialog.setPositiveButton("dialog close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int id) {
dialogInterface.dismiss();
}
});
return alertDialog.create();
}
}
Als nächstes kommt die Layoutdatei.
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
</LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="15dp"
tools:context=".LoginActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login success!"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp"
android:textSize="32dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Logout"
android:id="@+id/logoutButton"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:textSize="26dp" />
</RelativeLayout>
Das ist das Ende. Danke, dass du bis zum Ende zugesehen hast! !! Wir freuen uns über Ihre Fragen und Kommentare. : aufzeigen:
GitHub:https://github.com/hisakioomae/Firebase_Authentication_Facebook_Sample