J'essaie de me connecter via Facebook login dans mon application Android, mais il me donne toujours un hachage de clé non valide. J'ai généré la clé de hachage correctement par le terminal sur mon Mac en utilisant la commande donnée sur le site développeur de facebook et aussi utilisé mon id application facebook properly.Here est mon code pour la classe d'activité de connexion:Pourquoi le fragment de connexion facebook affiche-t-il toujours une clé invalide dans Android?
LoginActivity.java
package com.titmus.worldscope;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast;
import com.facebook.AccessToken;
import com.titmus.worldscope.model.WorldScopeUser;
import com.titmus.worldscope.utility.WorldScopeAPIService;
import com.titmus.worldscope.utility.WorldScopeRestAPI;
import java.security.MessageDigest;
import fragment.FacebookLoginFragment;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class LoginActivity extends AppCompatActivity implements FacebookLoginFragment.OnFragmentInteractionListener {
private static final String TAG = "LoginActivity";
private static final String WELCOME_GIF_LINK = "file:///android_asset/welcomeGifAssets/welcome.html";
private static final String APP_SERVER_AUTH_FAILED_MSG = "Authentication with WorldScope's server has failed, please check that you have internet connections and try again.";
private static Context context;
private FacebookLoginFragment facebookLoginFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_facebook_login);
context = this;
loadGifIntoWebView();
}
@Override
public void onFacebookLoginSuccess(AccessToken accessToken) {
// Successful login -> Redirect to Main activity
Log.d(TAG, "Login Success!");
Log.d(TAG, "AccessToken: " + accessToken.getToken());
// Instantiate and make a call to login user into WorldScope servers
Call<WorldScopeUser> call = new WorldScopeRestAPI(context).buildWorldScopeAPIService().loginUser(new WorldScopeAPIService.LoginUserRequest(accessToken.getToken()));
call.enqueue(new Callback<WorldScopeUser>() {
@Override
public void onResponse(Response<WorldScopeUser> response) {
if(response.isSuccess()) {
Log.d(TAG, "Success!");
Log.d(TAG, "" + response.body().toString());
WorldScopeUser user = response.body();
WorldScopeAPIService.setUser(user);
// Redirect to MainActivity if successful
redirectToMainActivity();
} else {
Log.d(TAG, "Failure" + response.code() + ": " + response.message());
// Logout of Facebook
logoutOfFacebook();
}
}
@Override
public void onFailure(Throwable t) {
Log.d(TAG, "Failure: " + t.getMessage());
// Logout of Facebook
logoutOfFacebook();
}
});
}
//Redirects to MainActivity
protected void redirectToMainActivity() {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("activity", TAG);
startActivity(intent);
}
// Called to logout of Facebook when attempt to authenticate with App server fails
private void logoutOfFacebook() {
if(facebookLoginFragment == null) {
// Get FacebookLoginFragment if missing
facebookLoginFragment = (FacebookLoginFragment) getSupportFragmentManager().findFragmentById(R.id.facebookLoginButtonFragment);
}
// Toast to inform user
Toast toast = Toast.makeText(context, APP_SERVER_AUTH_FAILED_MSG, Toast.LENGTH_LONG);
toast.show();
facebookLoginFragment.logoutFromFacebook();
}
// Method to load Gif's html data into WebView
private void loadGifIntoWebView() {
WebView welcomeGifWebView = (WebView) findViewById(R.id.welcomeGifWebView);
welcomeGifWebView.loadUrl(WELCOME_GIF_LINK);
}
}
activity_facebook_login.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="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/loginActivity"
tools:context="com.titmus.worldscope.LoginActivity">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/welcomeGifWebView"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/facebookLoginButtonFragment"
android:layout_centerHorizontal="true"
android:layout_marginBottom="48dp">
<ImageView
android:layout_width="32dp"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:src="@drawable/ic_logo"
android:layout_alignBottom="@+id/textView4"
android:layout_toStartOf="@+id/textView4"
android:layout_marginEnd="4dp"
android:paddingTop="6dp"
android:paddingBottom="5dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="WorldScope"
android:id="@+id/textView4"
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="32sp"
android:layout_above="@+id/facebookLoginButtonFragment"
android:layout_centerHorizontal="true" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="By logging in you agree to WorldScope's Privacy Policy and Terms of Use."
android:id="@+id/textView6"
android:textColor="#eeeeee"
android:textSize="14dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:textAlignment="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="57dp" />
<fragment
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:name="fragment.FacebookLoginFragment"
android:id="@+id/facebookLoginButtonFragment"
tools:layout="@layout/fragment_facebook_login"
android:layout_marginBottom="14dp"
android:layout_above="@+id/textView6"
android:layout_alignParentStart="true" />
</RelativeLayout>
facebook console développeur, les options a changé. Il ne me donne plus la possibilité de faire de l'application en direct –
Pas de problème juste genrer hashcode ci-dessus mentionné et l'ajouter dans la console. Il fonctionnera – Mrinmoy
oui, en l'essayant. il suffit de me donner un moment –