2016-04-25 6 views
8

Dieser Code funktioniert gut , wenn ich die Facebook-App deinstalliert, aber nicht mit Facebook App installiert. Ich benutze Facebook SDK 4.0.Android-Anwendung Anmeldung mit Facebook funktioniert nicht mit Facebook App installiert

Dies ist mein Code

package com.example.nhp04.gqfood; 
import com.facebook.AccessToken; 
import com.facebook.AccessTokenTracker; 
import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.Profile; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 



public class Login extends AppCompatActivity implements Animation.AnimationListener { 

private String info = ""; 
private LoginButton loginButton; 
private CallbackManager callbackManager; 
private AccessTokenTracker tracker; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 
     setContentView(R.layout.activity_login); 
loginButton = (LoginButton)findViewById(R.id.login_button); 



loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      AccessToken accessToken = loginResult.getAccessToken(); 
      Profile profile = Profile.getCurrentProfile(); 
      info = ("User ID: " + 

    loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken()); 
       } 

       @Override 
       public void onCancel() { 
        info = ("Login attempt canceled."); 
       } 

       @Override 
       public void onError(FacebookException e) { 
        info = ("Login attempt failed."); 
       } 
      }); 
      System.out.println(info); 
      tracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { 

      } 
     }; 
     tracker.startTracking(); 
    } 
    } 

diese Funktion für die Anmeldung

public boolean isLoggedIn() { 
    AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
    return accessToken != null; 
} 

dies auf Lebenslauf und Stop-Methoden überprüft

@Override 
protected void onResume() { 
    super.onResume(); 
    if (isLoggedIn()){ 
     Intent home = new Intent(this, home.class); 
     startActivity(home); 
    } 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    tracker.stopTracking(); 
    finish(); 
} 

Und das ist mein onActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     Intent home = new Intent(this, home.class); 
     startActivity(home); 
    } else { 
     Toast.makeText(getApplicationContext(), "Unable to login please check your internet connection",Toast.LENGTH_LONG).show(); 
    } 
} 
+0

ich dies bereits getan biete ich nur diese Frage als Herausforderung Frage, damit es anderen helfen, mehr Dinge zu lernen –

Antwort

0

Sie Ihre App in Ihrem Facebook-App entfernen können. wie Sie facebook App in gehen können Einstellung >> Kontoeinstellung >> App >> yuer App >> entfernen. nach dem entfernen yoer app deinstallieren sie ihre app. und installieren sie neu und überprüfen sie einloggen mit facebook funktioniert oder nicht.

0

Bitte Ihre Facebook-sdk-Version ändern, nachdem Sie sauber und neu erstellen Ihre Anwendung wird es

1

arbeiten, wo Ihr onActivityResult() Code. In onActivityResult() müssen Sie callbackmanager verwenden. Benutzer unter dem Code:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 

} 

oben funktioniert auch in Fragment/Aktivität. Stellen Sie sicher,

1. facebook app installed on your testing device 
2. In facebook developer account check whether you have mentioned 
- correct package name : refer your android project manifestfile.xml 

- check that have you mentioned correct launcher class 
- Check that you have given correct debug/release hash key 

3. Cross check your facebook application id and that mentioned in your manifestfile.xml facebook meta data are same 

In Ihrem Code Änderung unter

erstellen Sie callbackmanager nach setContentView(...) haben;

Änderung auf unter FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create();

Denken Sie daran, wenn dies mit Ihnen Problem facebook dann Ihr Problem liegt innerhalb dieser Zeit verschwenden nicht andere Sache, bei der Suche. Fehler beim Rückruf von Facebook sdk.

Kommentar senden, wenn Sie noch haben Problem

+0

Ihre callbackmanager nach setContentView in onCreate Methode setzen und versuchen Sie es erneut – MobDev

+0

ich versuchte, Dies geschieht aber –

+0

Checks für 1.facbook App-ID in Manifest-Datei wie in Ihrem FB-Entwickler-Konto 2. Überprüfen Sie Ihren Paketnamen und MainActivity in FB Dev-Konto ist korrekt 3.Überprüfen Sie haben den richtigen Hash-Schlüssel basierend auf Debug oder Release hinzugefügt Keystore – MobDev