2012-04-24 2 views
1

私はFacebookのユーザーの行動で投稿できるアプリを書いています。 掲示のプロセスはFBボタンをクリックしています。次に起こると思われることは、Facebookがログインしようとしていることです。ユーザーが既にログインしている場合は、SSOを使用してFacebookダイアログを作成し、フィード。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); 
} 

コード:

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

SomeDialogListenerDialogListenerのサブクラスであり、(自分のログインダイアログの場合と同じ)facebookからの応答を処理するコールバックのインスタンスになりますここで、あなたのコードは次のようになります。

関連する問題