2017-01-15 3 views
0

Ich versuche, Facebook Login in meiner ersten Android-Anwendung zu verwenden. Wenn ich die Anwendung zum ersten Mal starte und auf Facebook klicke, erscheint die Bestätigungsseite und nachdem ich auf Bestätigung geklickt habe, ruft sie keine der überschriebenen Callback-Methoden mehr auf. (OnSuccess, onCancel, onError). Es gibt nur die erste Seite zurück, auf der sich der Facebook-Button befindet. Und auf den zweiten Klick und nach dem Neustart der Anwendung und klicken Sie auf diese Schaltfläche, es tut nichts zu dieser Zeit, auch nicht die Bestätigungsseite geöffnet. Was kann mit meinem Code falsch sein und was könnte der Grund für diese beiden Probleme sein?Android Login von Facebook tut nichts

1) Warum wird nach der Bestätigung keine Callback-Methode aufgerufen? 2) Warum nach dem ersten Mal, klicken Sie auf Login-Taste nichts tun?

Hier ist meine MainActivity Klasse

public class MainActivity extends AppCompatActivity { 

     public static CallbackManager callbackManager = CallbackManager.Factory.create(); 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      FacebookSdk.sdkInitialize(getApplicationContext()); 
      setContentView(R.layout.activity_main); 

      final LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 
      loginButton.setReadPermissions("email"); 

      // Callback registration 
      loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        // App code 
        System.out.println("On Success"); 
       } 
       @Override 
       public void onCancel() { 
        // App code 
        System.out.println("On Cancel"); 
       } 

       @Override 
       public void onError(FacebookException exception) { 
        // App code 
        System.out.println(exception.getStackTrace()); 
       } 
      }); 
     } 
} 

AndroidManifest.xml

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     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> 
    </application> 
    <uses-permission android:name="android.permission.INTERNET"/> 

</manifest> 

activity_layout.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:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.myevent.MainActivity"> 

    <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" /> 
</RelativeLayout> 

Antwort

0

prüfen Sie diesen Code

public class MainActivity extends AppCompatActivity { 


    private CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_main); 

     LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 
     loginButton.setReadPermissions(Arrays.asList("public_profile", "email", 
        "user_birthday")); 



     callbackManager = CallbackManager.Factory.create(); 
     LoginManager.getInstance().registerCallback(callbackManager, callback); 
    } 

    FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      // success 
     } 

     @Override 
     public void onCancel() { 
      // cancel 
     } 

     @Override 
     public void onError(FacebookException error) { 
      // error 
     } 
    }; 



    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 
+0

es ist bereits zu manifest hinzugefügt. – cincin

+0

@cincin ok ich werde meinen Code dann bearbeiten –

+0

@cincin überprüfen Sie den Code –