2017-01-15 3 views
0

私は最初のアンドロイドアプリケーションでFacebookのログインを使用しようとしています。アプリケーションを初めて実行してfacebookでログインをクリックすると、確認ページが表示され、確認をクリックすると、オーバーライドされたコールバックメソッドが呼び出されません。 (OnSuccess、onCancel、onError)。 facebookボタンでログインした最初のページを返します。また、アプリケーションを再起動してそのボタンをクリックした後、2回目以降は確認メッセージが表示されません。だから、私のコードで何が間違っているのか、そして、その下の2つの問題の原因は何か。facebookのアンドロイドログインは何もしません

1)確認後にコールバックメソッドが呼び出されないのはなぜですか? 2)なぜ初めてログインボタンをクリックしても何もしないのですか?ここで

はAndroidManifest.xmlを

私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()); 
       } 
      }); 
     } 
} 

ある

<?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大丈夫私は –

+0

コードを編集します@incincコードを確認してください –

関連する問題