2017-01-21 4 views
0

내 앱을 통해 연결할 수 있습니다 (내 프로필 환경 설정에서 앱에 권한이 부여 된 것을 볼 수 있습니다). 나는 응용 프로그램을 통해 로그인하지만 난 내 액세스 토큰을 취득하고자 할 때, 그것은Android Facebook 로그인 토큰이 유효하지 않습니다

이 내에서 onCreate 내 응용 프로그램의 방법입니다 ... 널 (null)로 반환됩니다 내 활동에

@Override 
public void onCreate() { 
    super.onCreate(); 
    getFbKeyHash(); 
    FacebookSdk.sdkInitialize(getApplicationContext(), new FacebookSdk.InitializeCallback() { 
     @Override 
     public void onInitialized() { 
      if(AccessToken.getCurrentAccessToken() == null){ 
       System.out.println("not logged in yet"); 
       isFBLogged = false; 
      } else { 
       isFBLogged = true; 
       System.out.println("Logged in"); 
      } 
     } 
    }); 
    callbackManager = CallbackManager.Factory.create(); 
    AppEventsLogger.activateApp(this); 
} 

, 나는 이것을 사용 방법 :

<?xml version="1.0" encoding="utf-8"?> 

: 이것은 내 매니페스트 파일
LoginManager.getInstance().logInWithPublishPermissions(FacebookTest.this, Arrays.asList("publish_actions")); 

입니다

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

<application 
    android:name=".MyApplication" 
    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" /> 
    <provider 
     android:authorities="com.facebook.app.FacebookContentProvider" 
     android:name="com.facebook.FacebookContentProvider" 
     android:exported="true"/> 

    <activity android:name=".Activity.FacebookTest"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Activity.MainActivity" /> 
</application> 

내가 어떤 액세스 토큰이없는 이유는 어떤 단서?

+0

당신이 LoginManager.getInstance()를 사용하려고 않았다 registerCallback (callbackManager, 콜백). –

+0

나는 이것을 어떻게해야 할까 ...? – dequec64

+0

로그인 한 결과를 받아서 acceststoken을 얻을 수 있습니다 –

답변

2

확인 코드 :

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); 
    } 
} 
관련 문제