1

だから私はFacebookのフィードダイアログをポップアップさせようとしていますが、ポップアップするとすぐに失敗するか何かのように閉じます。ところで、アプリケーションがインストールされている場合にのみ、私は facebook を扱っています。インストールされていない限り、共有したくありません。

ここから出発します: https://developers.facebook.com/docs/howtos/androidsdk/3.0/feed-dialog/

承認とログインのためにこれと少し統合されています: https://developers.facebook.com/docs/howtos/androidsdk/3.0/native-login/

これが私のコードです:

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");

public void sendToFacebook()
{
if (session != null && session.isOpened()) {
    List<String> permissions = session.getPermissions();
    if (!isSubsetOf(PERMISSIONS, permissions)) {
        pendingPublishReauthorization = true;
        Session.NewPermissionsRequest newPermissionsRequest = new Session
                .NewPermissionsRequest(activity, PERMISSIONS);
        session.requestNewPublishPermissions(newPermissionsRequest);
        return;
    }
    final Bundle parameters = new Bundle();
    parameters.putString(NAME, app name);
    parameters.putString(LINK, info);
    parameters.putString(PICTURE, picture link);
    parameters.putString(CAPTION, "caption stuff");
    parameters.putString(DESCRIPTION, "description");

    activity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            WebDialog feedDialog = (
                    new WebDialog.FeedDialogBuilder(activity,
                        Session.getActiveSession(),
                        parameters))
                    .setOnCompleteListener(new OnCompleteListener() {

                        @Override
                        public void onComplete(Bundle values,
                            FacebookException error) {
                            //do something
                        }

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

    }else{
        initFacebookEngine(); //inits or opens the session. 
    }
    }

    private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
        for (String string : subset) {
            if (!superset.contains(string)) {
                return false;
            }
        }
        return true;
    }

    private void initFacebookEngine() {
    if(session == null){
        session = new Session.Builder(ctx).build();
    }
    if(!session.isOpened() || !session.isClosed()){

         session.openForPublish(new Session.OpenRequest(activity)
            .setPermissions(PERMISSIONS)
            .setCallback(callback));
    }else{
        Session.openActiveSession(activity, true, callback);
    }

sendToFacebook メソッドを呼び出します。コールバックは、呼び出されたときに sendToFacebook を呼び出すだけです。コードは認証と許可を行いますが、フィード ダイアログにはその顔が表示されません。Facebook は何かをしているように振る舞いますが、終了してアプリに戻ります。誰が何が起こっているのか知っていますか?

4

0 に答える 0