2012-04-24 3 views
1

사용자의 행동에 Facebook에 게시 할 수있는 앱을 쓰고 있습니다. 게시 프로세스에서 FB 버튼을 클릭하면 다음에 일어날 일은 Facebook에서 로그인을 시도하는 것이며, 사용자가 이미 SSO를 사용하여 로그인 한 경우 Facebook 대화 상자를 만들어 사용자에게 게시합니다 먹이.Facebook 요청이 사용자 입력을 기다리지 않습니다.

그러나 사용자와의 상호 작용은 없으며 게시물은있는 그대로 Facebook에 게시됩니다.

Facebook에서의 게시를 위해 일반 모바일 앱 사용자 상호 작용을 어떻게 유도 할 수 있습니까? 페이스 북에 로그인을위한

코드 : publishStream()에 대한

public static final String appid = "1234567890"; 
public static final String[] permissions = { "publish_stream" }; 
Facebook facebook; 

facebook.authorize(MyClass.this, permissions, 
       new DialogListener() { 

     @Override 
     public void onComplete(Bundle values) { 
      // control comes here if the login was successful 
      // Facebook.TOKEN is the key by which the value of 
      // access token is stored in the Bundle called 
      // 'values' 
      Log.d("COMPLETE", "AUTH COMPLETE. VALUES: " 
           + values.size()); 
      Log.d("AUTH TOKEN", 
        "== " + values.getString(Facebook.TOKEN)); 
      updateStatus(values.getString(Facebook.TOKEN)); 
     } 

     @Override 
     public void onFacebookError(FacebookError e) { 
      Log.d("FACEBOOK ERROR", "FB ERROR. MSG: " + e.getMessage() 
        + ", CAUSE: " + e.getCause()); 
     } 

     @Override 
     public void onError(DialogError e) { 
      Log.e("ERROR", "AUTH ERROR. MSG: " + e.getMessage() 
        + ", CAUSE: " + e.getCause()); 
     } 

     @Override 
     public void onCancel() { 
      Log.d("CANCELLED", "AUTH CANCELLED"); 
     } 
}); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.d("onActivityResult", "onActivityResult"); 
    facebook.authorizeCallback(requestCode, resultCode, data); 
} 

코드 : 당신은 facebook.request() 방법을 사용

protected void updateStatus(String accessToken) { 
    try { 
     Bundle msg = new Bundle(); 
     msg.putString("description", this.title); 
     msg.putString("link", this.link); 
     msg.putString("message", description); 
     msg.putString(Facebook.TOKEN, accessToken); 
     String response = facebook.request("me/feed", msg, "POST"); 
     Log.d("UPDATE RESPONSE", "" + response); 
     Toast.makeText(SinglePost.this, "Posted on Facebook", Toast.LENGTH_SHORT).show(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

답변

2

, 그것은 백그라운드에서 자동으로 메시지를 게시 할 예정입니다. 대화 상자를 표시하려면 facebook.dialog() 메소드를 사용하십시오. 코드는 다음과 같이 표시됩니다 SomeDialogListenerDialogListener의 서브 클래스가

facebook.dialog(context, "stream.publish", parameters, new SomeDialogListener()); 

인 경우와 facebook에서 응답 (로그인 대화 상자의 경우와 동일)를 처리하는 콜백 인스턴스가 될 것입니다.

관련 문제