2017-01-15 3 views
0

Я пытаюсь использовать facebook login в своем первом приложении для Android. когда я запускаю приложение в первый раз и нажимаю логин по facebook, появляется страница с подтверждением и после подтверждения щелчка на нем он не вызывает каких-либо перегруженных методов обратного вызова. (OnSuccess, onCancel, onError). Он просто возвращает первую страницу, где есть логин с помощью кнопки facebook. И при повторном нажатии и после перезапуска приложения и нажатии этой кнопки он ничего не делает, даже если он не открывает страницу подтверждения. Так что может быть неправильно с моим кодом и что может быть причиной этих двух проблем ниже.android login by facebook ничего не делает

1) Почему после подтверждения какой-либо метод обратного вызова не вызывается? 2) Почему после первого нажатия кнопки входа в систему ничего не происходит?

Вот мой MainActivity класс

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> 

ответ

0

Проверить этот код

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

он уже добавлен в манифест. – cincin

+0

@cincin ok я отредактирую свой код, затем –

+0

@cincin проверить код –