Ceci est un mémo étape par étape pour l'authentification Android Firebase (authentification Facebook).
http://qiita.com/Sert/items/1fbdbf68dd087201a57b
http://qiita.com/ronnnnn/items/dddf57a0369f780d8ac2
L'IDE est Android Studio. Références méthode d'authentification de connexion google méthode d'authentification par e-mail et mot de passe google, Facebook, Twitter, à laquelle j'ai fait référence ici. De plus, il semble qu'il n'y avait pas d'article dédié à Facebook, je vais donc l'écrire.
Ceci est omis.
Appuyez sur Ajouter une nouvelle application.
Ensuite, entrez un nom approprié dans le nom d'affichage. Ensuite, un contrôle de sécurité apparaîtra, nous allons donc le franchir. Ensuite, l'écran changera, alors appuyez sur Connexion Facebook, puis sur le prochain Android.
Avez-vous eu un écran comme celui-ci? Faisons cela. Pour Android Studio
Ignorez le SDK Facebook pour Android. Veuillez appuyer sur Suivant.
Importez le SDK Facebook.
build.gradle (projet)
build.gradle(project)
buildscript {
repositories {
jcenter()
mavenCentral()//Ajouter ici
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle (application)
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)'//Ajouter ici
}
C'est la fin.
package name.LoginActivity
.prochain Enregistrer → utiliser ce nom de package Cliquez s'il vous plait. C'est la fin de 3.
Je suis Windows, donc
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Cliquez pour coller. Au fait, j'utilise Windows bash, donc je peux utiliser la commande keytool. Cela n'a pas été possible à l'invite de commande. Windows Bash est pratique, alors installons-le.
Installation de Windows Bash http://qiita.com/Aruneko/items/c79810b0b015bebf30bb Et pour faire un terminal propre https://www.sa-sa-ki.jp/blog/2016/12/bash-on-ubuntu-on-windows-wsl-terminal/ Ce serait bien d'utiliser un outil comme celui-ci: ensoleillé:
Collez le résultat de la commande avec. Enregistrer → Suivant
Activez l'authentification unique pour l'application Je vais sauter.
Ajouter l'ID d'application Facebook Suivez la description.
Ajoutez FacebookActivity à AndroidManifest.xml C'est également comme décrit.
Activer les onglets personnalisés de Chrome C'est aussi comme décrit
Ça ressemble à ça.
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>
Eh bien, il y a encore plus.
Ensuite, enregistrez l'application dans Firebase et déclarez que vous utiliserez Facebook. Ajouter un projet → Nom du projet (nom arbitraire) → Ajouter un projet → Ajouter Firebase à l'application Android
Parce que ça ressemble à ça Nom du package Android: similaire à celui que vous avez entré dans Facebook pour les développeurs plus tôt
Surnom de l'application: omis
Certificat de signature pour le débogage SHA-1 (facultatif): c'est
keytool -exportcert -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Collez-le dans Windows Bash. Appuyez ensuite sur Entrée et entrez le mot de passe "android"
Puisqu'il est sorti comme ceci, SHA1: hogehogelldpksvopd
Hogehogelldpksvopd Collez uniquement cette partie et enregistrez l'application. Ensuite, placez google-services.json dans le PATH comme décrit. Ensuite, jouez avec build.gradle comme décrit.
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'//ajouter à
}
}
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'//ajouter à
Viennent ensuite les paramètres d'authentification.
Essayez d'utiliser (Authentification) → Méthode de connexion → Facebook À ce stade, il vous sera demandé l'ID d'application et l'ID secret. Ouvrez à nouveau Facebook pour les développeurs et vérifiez le tableau de bord.
Cette. : muscle:
Revenez ensuite dans Firebase, saisissez-le et copiez l'URI de redirection OAuth.
Ouvrez également Facebook pour les développeurs et
Appuyez sur Connexion Facebook sur la gauche et collez l'URL que vous venez de copier dans un URI de redirection OAuth valide. Appuyez ensuite sur Enregistrer les modifications en bas à droite.
Revenez à Firebase et enregistrez. Ceci complète également le côté Firebase.
En utilisant ce qui précède, nous allons créer une application telle que Connexion avec activité de connexion → Transition → Déconnexion avec activité principale → Transition → ... lors de l'authentification avec Firebase.
Tout d'abord, jouez avec build.gradle (application)
build.gradle
compile 'com.google.firebase:firebase-core:11.0.1'
compile 'com.google.firebase:firebase-auth:11.0.1'
Ensuite, assurez-vous que LoginActivity est appelé en premier dans Manifest.xml.
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>
Ensuite, créez une activité.
La source de la transition LoginActivity.java
et la destination de la transition 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();
}
});
}
}
Créez un fichier pour gérer la boîte de dialogue.
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();
}
}
Vient ensuite le fichier de mise en page.
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>
C'est la fin. Merci d'avoir regardé jusqu'au bout! !! Nous sommes à l'écoute de vos questions et commentaires. : pointer vers le haut:
GitHub:https://github.com/hisakioomae/Firebase_Authentication_Facebook_Sample