4

페이스 북 로그인으로 앱을 개발했지만 로그인 프로세스에는 문제가 없습니다. 하지만 로그 아웃하려면 버튼이 보이지 않습니다.Android 왜 Facebook SDK 로그 아웃 버튼이 표시되지 않습니까?

깨진 앱 스크린 샷

BROKEN APP

작업 앱 스크린 샷

WORKING APP

깨진 응용 프로그램 Gradle을 파일;

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.1" 
    defaultConfig { 
     applicationId "com.ex.ex" 
     minSdkVersion 15 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 

    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

    // Glide image library 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:design:24.2.1' 
    compile 'com.android.support:support-v4:24.2.1' 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    compile 'com.google.android.gms:play-services-auth:9.2.1' 
    compile 'com.facebook.android:facebook-android-sdk:4.1.0' 

    testCompile 'junit:junit:4.12' 
} 

apply plugin: 'com.google.gms.google-services' 

문제점의 근원은 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

+1

당신이 활동 코드 및 XML 물건을 게시 할 경우 아마 유용합니다. 아마 당신이 로그인 한 경우 버튼을 표시하지 않는지 확인하십시오. – Flummox

+0

페이스 북 버튼을 클릭 한 후 열리는 'AlertDialog'는 Facebook SDK와 함께 제공되거나 앱의 일부분입니까? –

답변

0

Facebook android sdk의 LoginButton 위젯을 사용했다고 가정합니다. 당신이 LoginButton 위젯 다음 코드의 로그 아웃을 클릭하면

실행 :

protected void performLogout(Context context) { 
     final LoginManager loginManager = getLoginManager(); 
     if (confirmLogout) { 
      // Create a confirmation dialog 
      String logout = getResources().getString(
        R.string.com_facebook_loginview_log_out_action); 
      String cancel = getResources().getString(
        R.string.com_facebook_loginview_cancel_action); 
      String message; 
      Profile profile = Profile.getCurrentProfile(); 
      if (profile != null && profile.getName() != null) { 
       message = String.format(
         getResources().getString(
           R.string.com_facebook_loginview_logged_in_as), 
         profile.getName()); 
      } else { 
       message = getResources().getString(
         R.string.com_facebook_loginview_logged_in_using_facebook); 
      } 
      AlertDialog.Builder builder = new AlertDialog.Builder(context); 
      builder.setMessage(message) 
        .setCancelable(true) 
        .setPositiveButton(logout, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          loginManager.logOut(); 
         } 
        }) 
        .setNegativeButton(cancel, null); 
      builder.create().show(); 
     } else { 
      loginManager.logOut(); 
     } 

}

위젯 XML 파일에 잘못된 지정하지 않는 한

confirmLogout 플래그는 기본적으로 true로 설정됩니다

confirmLogout = a.getBoolean(R.styleable.com_facebook_login_view_com_facebook_confirm_logout, true); 

그러므로 xml 파일에서 confirm_logout이 false로 설정되어 있는지 확인하십시오. 그러나이 경우 사용자는 경고 대화 상자를 표시하지 않고 자동으로 로그 아웃됩니다.

문제가 해결되지 않은 경우 jave 코드와 xml 코드를 게시하십시오.