2012-04-24 2 views
1

Я пишу приложение, которое может размещать на Facebook в поведении пользователя. процесс публикации - это щелчок по кнопке FB, следующая вещь, которая должна произойти, заключается в том, что Facebook пытается войти в систему, и если пользователь уже зарегистрирован, используя SSO, он создает диалог в Facebook и публикует его на пользователях корм.Facebook-запрос не ждет ввода пользователем

Однако взаимодействие с пользователем отсутствует, и сообщение публикуется на Facebook как есть.

Как я могу пригласить обычное мобильное приложение для взаимодействия с пользователем для публикации на Facebook?

Код для входа в Facebook:

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); 
} 

Код для publishStream():

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.request() метод, он будет отправить сообщение тихо в фоновом режиме. Чтобы показать диалог, вы будете использовать метод facebook.dialog(). Ваш код будет выглядеть следующим образом:

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

Где SomeDialogListener является подклассом DialogListener и будет ваш обратный вызов экземпляра для обработки ответа от facebook (такой же, как и в случае вашего диалога входа).

Смежные вопросы