2012-04-12 3 views
0

저는 페이스 북을 안드로이드 응용 프로그램에 통합하려고합니다. 페이스 북 승인 코드를 추가했습니다 (지침은 여기 http://developers.facebook.com/docs/mobile/android/build/에 따라 모든 단계를 따랐습니다). facebook 인증이 발생할 때마다 onActivityResult가 호출되지만 데이터는 null이고 resultCode는 0 (영/RESULT_CANCELED)입니다.안드로이드 페이스 북의 승인 onActivityResult()는 항상 데이터가 null로 호출되고 resultCode는 0 (영/RESULT_CANCELED)입니다.

주요 활동 클래스

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {   
    super.onActivityResult(requestCode, resultCode, data);   
    MCAndroidFBIntegration.authorizeCallback(requestCode, resultCode, data); 
} 

MCAndroidFBIntegration.java

공용 클래스 MCAndroidFBIntegration가 {

private static final String APP_ID = APP_ID_NUMBER; 
private static Facebook facebook; 
private AsyncFacebookRunner mAsyncFBRunner; 
public Preferences mPrefs; 
private Context ctx; 
private static MCAndroidFBIntegration mcAndroidFBIntegration; 

public MCAndroidFBIntegration(Context ctx) { 
    this.ctx = ctx; 
} 

@Override 
public void integrate() { 
    // Integrate with Facebook 
    facebook = new Facebook(APP_ID); 
    mAsyncFBRunner = new AsyncFacebookRunner(facebook); 
    loginToFacebook();  
} 

private void loginToFacebook() { 
    mPrefs = GamePreference.getPreferences(); 
    String accessToken = mPrefs.getString(Config.ACCESS_TOKEN, null); 
    long expires = mPrefs.getLong(Config.ACCESS_EXPIRES, 0); 

    if (accessToken != null) { 
     facebook.setAccessToken(accessToken); 
    } 

    if (expires != 0) { 
     facebook.setAccessExpires(expires); 
    } 

    if (!facebook.isSessionValid()) { 
     facebook.authorize((Activity) ctx, new String[] { "publish_stream", 
       "read_stream", "offline_access"}, new DialogListener() { 

      @Override 
      public void onCancel() { 
       // Function to handle cancel event 
       System.out.println("Facebook:: event cancelled"); 
      } 

      @Override 
      public void onComplete(Bundle values) { 
       // Function to handle complete event 
       // Edit Preferences and update facebook acess_token 
       System.out 
         .println("Facebook:: setting access token and expire time in preferences"); 
       User user = User.getUser(); 
       if (user != null) { 
        user.setAccessToken(facebook.getAccessToken()); 
        user.setAccessExpires(facebook.getAccessExpires()); 
        user.updatePrefs(); 
        mPrefs.flush(); 
       } 
      } 

      @Override 
      public void onError(DialogError error) { 
       // Function to handle error 
       System.out.println("Facebook:: Error - " 
         + error.getLocalizedMessage()); 

      } 

      @Override 
      public void onFacebookError(FacebookError fberror) { 
       // Function to handle Facebook errors 
       System.out.println("Facebook:: fbError - code: " 
         + fberror.getErrorCode() + " message: " 
         + fberror.getLocalizedMessage()); 
      } 

     }); 
    } 
} 

public static void authorizeCallback(int requestCode, int resultCode, 
     Intent data) { 
    if (data != null) { 
     String error = data.getStringExtra("error"); 
     if (error != null) { 
      String description = data.getStringExtra("error_description"); 
      System.out.println("Facebook:: error desc - " + description); 
     } else { 
      String token = data.getStringExtra("access_token"); 
      String expires = data.getStringExtra("expires_in"); 
      System.out.println("Facebook:: call back access token - " 
        + token); 
      System.out.println("Facebook:: call back expires - " + expires); 
     } 
    } 
    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

}

012 IFacebookIntegration를 구현 : 여기에

내 코드입니다

캠 누군가 내가 여기서하고있는 실수가 무엇인지 말해주십시오.

덕분에, 카말

+0

는 항상 로그에이를 얻을. ** 활동이 너무 ** 활동 결과를 취소, 새로운 작업으로 시작된다. 이것은 무엇을 의미 하는가? 나는 이것에 대해 그물을 조사하고 이것이 android : launchMode = "singleInstance"와 관련이 있다는 것을 알았다. 하지만 이것을 변경하면 잘못된 Android 앱 키로 인해 인증 실패와 같은 다른 오류가 발생합니다. 나는 무엇을해야합니까? 나는 너무 혼란스럽고 지쳐있다. – Kamal

+0

안녕 카말,이 문제를 해결할 수 있었 니? 나는 똑같은 문제에 직면하고 있지만 매우 혼란 스럽다. – user669231

답변

1

내가 좀 같은 문제에 직면했다. 그것을 해결하기 위해 코드 아래에 업데이트하십시오.

public void loginAndPostToWall() { 
    facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, 
     new LoginDialogListener());} 
관련 문제