2012-01-10 7 views
1

나는 안드로이드 모바일과 페이스 북을 통합하기 위해 노력하고있어, 내 애플 리케이션에서 일부 텍스트를 가져 와서 페이스 북에서 상태로 넣어, 내가 본 때 facebook_sdk 목적을 위해 노력했다 나는 몇 가지 세부 사항을 부탁드립니다안드로이드에서 페이 스북 인증 문제

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    button1 = (Button)findViewById(R.id.Button1); 
    button2 = (Button)findViewById(R.id.Button2); 
    tv1 = (TextView)findViewById(R.id.TextView1); 
    et1 = (EditText)findViewById(R.id.EditText1); 
    button1.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      b1Click(); 
     } 

    }); 
    button2.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      b2Click(); 
     } 

    }); 
} 
private void saveFBToken(String token, long tokenExpires){ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    prefs.edit().putString("FacebookToken", token).commit(); 
} 

private void fbAuthAndPost(final String message){ 

    facebook.authorize(this, new String[]{"publish_stream"},new DialogListener() { 

     @Override 
     public void onComplete(Bundle values) { 
      Log.d(this.getClass().getName(),"Facebook.authorize Complete: "); 
      saveFBToken(facebook.getAccessToken(), facebook.getAccessExpires()); 
      updateStatus(values.getString(Facebook.TOKEN), message); 
     } 

     @Override 
     public void onFacebookError(FacebookError error) { 
      Log.d(this.getClass().getName(),"Facebook.authorize Error: "+error.toString()); 
     } 

     @Override 
     public void onError(DialogError e) { 
      Log.d(this.getClass().getName(),"Facebook.authorize DialogError: "+e.toString()); 
     } 

     @Override 
     public void onCancel() { 
      Log.d(this.getClass().getName(),"Facebook authorization canceled"); 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode,Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode){ 
    case Facebook.FORCE_DIALOG_AUTH: 
     facebook.authorizeCallback(requestCode, resultCode, data); 
    } 
} 

private void b1Click(){ 

    mAuthAttempts = 0; 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    mFacebookToken = prefs.getString("FacebookToken", ""); 

    if(mFacebookToken.equals("")){ 
     fbAuthAndPost(et1.getText().toString()); 
    }else{ 
     updateStatus(mFacebookToken,et1.getText().toString()); 
    } 
} 

private void b2Click(){ 
    mAuthAttempts = 0; 
    updateStatus(facebook.TOKEN,et1.getText().toString()); 
} 

public void updateStatus(String accessToken, String message){ 
    try {   
     Bundle bundle = new Bundle(); 
     bundle.putString("message", message);   
     bundle.putString(Facebook.TOKEN,accessToken);   
     String response = facebook.request("me/feed",bundle,"POST");   
     Log.d("UPDATE RESPONSE",""+response); 
     showToast("Update process complete. Respose:"+response); 
     if(response.indexOf("OAuthException") > -1){ 
      if(mAuthAttempts==0){ 
       mAuthAttempts++; 
       fbAuthAndPost(message); 
      }else{ 
       showToast("OAuthException:"); 
      } 
     } 
    } catch (MalformedURLException e) {   
     Log.e("MALFORMED URL",""+e.getMessage()); 
     showToast("MalformedURLException:"+e.getMessage()); 
    } catch (IOException e) {   
     Log.e("IOEX",""+e.getMessage()); 
     showToast("IOException:"+e.getMessage()); 
    } 

    String s = facebook.getAccessToken()+"\n"; 
    s += String.valueOf(facebook.getAccessExpires())+"\n"; 
    s += "Now:"+String.valueOf(System.currentTimeMillis())+"\n"; 
    tv1.setText(s); 
} 
private void showToast(String message){ 
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); 
} 
+0

logcat ...을 입력하면 오류 세부 정보가 표시됩니다. –

+0

당신의 문제를 해결할 수있는 페이스 북의 API 클래스를 넣어주세요 .. –

+0

치명적인 예외 : 주 android.content.res.Resources $ NotFoundException : 리소스 ID # 0x7f020005 –

답변

0

사전에 감사 : menifest 전체 인터넷 연결이 있지만 디버깅 모드, 응용 프로그램, 라인 facebook.authorize()에 종료됩니다 ... 아래에있는 내 코드입니다 응용 프로그램이 충돌하기 전에받은 오류 Usama가 logcat이 좋을 것이라고 말했다. 변수 페이 스북 = 새 Facebook (APP_ID);을 초기화하는 위치를 볼 수 없습니다. 매니 페스트에서 페이스 북이 사용하는 모든 활동이 있는지 확인하십시오. 마지막으로 나는 당신에게 이것을 알려준다 : https://github.com/facebook/facebook-android-sdk/blob/master/examples/simple/src/com/facebook/android/Example.java

나는 이것이 도움이되기를 희망한다.

< < 페이스 북 페이지에 로그인 할 때 사용자와 암호가 맞으면 토큰을 받게됩니다. 즉, 응용 프로그램에 유효한 사용자가 페이스 북 서버에 로그인되어 있음을 의미합니다. SessionStore 클래스는 해당 토큰을 공유 환경 설정에 저장합니다. 그러면 토큰을 사용하여 암호를 묻지 않고 나중에 다시 페이스 북에 연결할 수 있습니다. 세션이 만료되지 않은 경우에만이 작업을 수행 할 수 있습니다. 오류 정보 : "요청한 리소스를 찾을 수없는 경우 리소스 API가이 예외를 throw합니다."

필자는 오랫동안 페이스 북 통합을 해왔고 회사에서는 코드가 없기 때문에 코드를 전달할 수 없습니다. 아마이 게시물을 봐 도움이 될 것입니다. http://www.jiahaoliuliu.com/2011/05/android-runtime-error.html

내가 더 노골적인 것을 발견하는지 살펴 보겠습니다.

+0

나는 그것이 그대로 SessionStore 클래스를 이해하지 못합니다. 내가 사용하고있는 facebook_sdk.jar에 없습니다. –

+0

치명적인 예외 : 메인 android.content.res.Resources $ NotFoundException : 리소스 ID # 0x7f020005 –

0
android.content.res.Resources$NotFoundException 

가 아이디어로 인해 프로젝트를 가져올 때 영어 문자열 리소스를 덮어 썼을 수 있습니다.