2

ユーザーの Facebook ステータスを更新する最も簡単な方法を知りたいです。「共有」ボタンを表示したいだけです。ユーザーが「共有」をタップすると:

  1. すでに Facebook にログインしている場合は、ダイアログが表示され、Facebook に送信する前に投稿を編集するオプションが表示されます。

  2. Facebook にまだログインしていない場合は、ログインするように求められ、ログインに成功すると共有ダイアログが自動的に表示されます。

これを行う簡単な方法はありますか、それとも別の Facebook ログインフローを実装する必要がありますか?

4

2 に答える 2

3

だから私はそれを行うためのかなりきれいな方法を持っていると思います。どんなコメントでも歓迎します。

ログインしてフィードダイアログを表示するための作業を行う Facebook Manager クラス全体を投稿しています。

public class ManagerFacebook
{
    private Activity mActivity;

    public void updateStatus(final String name, final String caption, final String description, final String link, final String urlPicture,
        final Activity activity, final ListenerShareFacebook listenerShareFacebook)
    {
        mActivity = activity;

        // start Facebook Login
        Session.openActiveSession(activity, true, new Session.StatusCallback()
        {
            // callback when session changes state
            public void call(final Session session, SessionState state, Exception exception)
            {
                if (session.isOpened())
                {
                    publishFeedDialog(name, caption, description, link, urlPicture, listenerShareFacebook);
                }

            }
        });
    }

    private void publishFeedDialog(String name, String caption, String description, String link, String urlPicture,
        final ListenerShareFacebook listenerShareFacebook)
    {
        Bundle params = new Bundle();
        params.putString("name", name);
        params.putString("caption", caption);
        params.putString("description", description);
        params.putString("link", link);
        params.putString("picture", urlPicture);

        Session session = Session.getActiveSession();

        WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(mActivity, session, params)).setOnCompleteListener(new OnCompleteListener()
        {
            public void onComplete(Bundle values, FacebookException error)
            {
                if (error == null)
                {
                    // When the story is posted, echo the success
                    // and the post Id.
                    final String postId = values.getString("post_id");
                    if (postId != null)
                    {
                        listenerShareFacebook.onShareFacebookSuccess();
                    }
                    else
                    {
                        // User clicked the Cancel button
                        listenerShareFacebook.onShareFacebookFailure("Publish cancelled");
                    }
                }
                else if (error instanceof FacebookOperationCanceledException)
                {
                    // User clicked the "x" button
                    listenerShareFacebook.onShareFacebookFailure("Publish cancelled");
                }
                else
                {
                    // Generic, ex: network error
                    listenerShareFacebook.onShareFacebookFailure("Error posting story");
                }
            }

        }).build();
        feedDialog.show();
    }
}

また、上で参照されているのは私の Listener インターフェイスなので、Facebook 関連のもののアクティビティを通知できます。

public interface ListenerShareFacebook
{
    void onShareFacebookSuccess();

    void onShareFacebookFailure(String error);
}
于 2013-04-16T00:14:43.830 に答える
2

私は本当にこれをお勧めします:

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
         sharingIntent.setType("text/plain");
         sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text");
         sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Title");
         startActivity(Intent.createChooser(sharingIntent, "Share using"));

これは Facebook SDK を使用しませんが、Facebook アプリを使用します。私の見解では、スマートフォンと Facebook を持っているほとんどの人がこのアプリを使用しており、このアプリを通じてすべてを共有することを期待しています。また、ユーザーはクリックして他のもの (Twitter、SMS、G+、メールなど) で共有することもできます。

私にとって、Facebook SDKの最良の代替品です。(写真も添付できます)

于 2013-04-15T17:15:32.080 に答える