Facebook SDK: ApiException: прокси-приложение не может запрашивать разрешения на публикацию без предварительной установки

Я борюсь с Android facebook SDK 3.5 riigth ow. С моими аккаунтами все работает отлично. Теперь я дал приложение своему другу, и когда он входит в систему, он не застревает из-за этого сбоя:

ApiException:The proxied app cannot request publish permissions without having being installed previously

11-19 12:18:43.530: W/System.err(13495): com.facebook.FacebookAuthorizationException: UnknownError: 

ApiException:The proxied app cannot request publish permissions without having being installed previously.
11-19 12:18:43.530: W/System.err(13495):    at com.facebook.Session.handleAuthorizationResult(Session.java:1078)
11-19 12:18:43.530: W/System.err(13495):    at com.facebook.Session.onActivityResult(Session.java:554)
11-19 12:18:43.530: W/System.err(13495):    at com.lochmann.viergewinntmultiplayerfb.MainActivity.onActivityResult(MainActivity.java:289)
11-19 12:18:43.530: W/System.err(13495):    at android.app.Activity.dispatchActivityResult(Activity.java:5390)
11-19 12:18:43.530: W/System.err(13495):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3178)
11-19 12:18:43.530: W/System.err(13495):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3225)
11-19 12:18:43.535: W/System.err(13495):    at android.app.ActivityThread.access$1100(ActivityThread.java:140)
11-19 12:18:43.535: W/System.err(13495):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1275)
11-19 12:18:43.535: W/System.err(13495):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-19 12:18:43.535: W/System.err(13495):    at android.os.Looper.loop(Looper.java:137)
11-19 12:18:43.535: W/System.err(13495):    at android.app.ActivityThread.main(ActivityThread.java:4898)
11-19 12:18:43.535: W/System.err(13495):    at java.lang.reflect.Method.invokeNative(Native Method)
11-19 12:18:43.535: W/System.err(13495):    at java.lang.reflect.Method.invoke(Method.java:511)
11-19 12:18:43.535: W/System.err(13495):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
11-19 12:18:43.535: W/System.err(13495):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
11-19 12:18:43.540: W/System.err(13495):    at dalvik.system.NativeStart.main(Native Method)

Вот мой код входа

public void login(final Activity activity, final IFBCallbacks callback) {
        if (isLoggedin()) {
            if (callback != null)
                callback.onLoggedIn();

            actionsAfterLoggedIn(activity, callback);
            Log.i(TAG, "Already Logged in");
            return;
        }
        if (!isLoggedin()) {
            Log.i(TAG, "login() NOT LOGGED IN");
            logout(activity, null);
        }
        Log.i(TAG, "NOT LOGGED IN");
        _session = new Session.Builder(activity).build();
        Session.setActiveSession(_session);
        Session.OpenRequest request = new Session.OpenRequest(activity);
        // Note that you cannot set email AND publish_actions in the same
        // request
        request.setPermissions(getNeededPermisiions());
        // request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
        StatusCallback scallback = new StatusCallback() {

            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {
                if (state.isOpened() && hasPermissions(getNeededPermisiions())) {
                    Log.i(TAG, "Succesfully logged in to facebook");
                    if (callback != null)
                        callback.onLoggedIn();

                    actionsAfterLoggedIn(activity, callback);
                    session.getAccessToken();
                    FBUtils.saveAccesToken(activity, session.getAccessToken(),
                            session.getExpirationDate());
                    return;
                }

                // Grant permissions
                if (!session.getPermissions().containsAll(
                        getNeededPermisiions())
                        && session.isOpened()) {
                    Log.i(TAG, "Not all needed Permissions granted");
                    // session.requestNewPublishPermissions(new
                    // Session.NewPermissionsRequest(
                    // activity, getNeededPermisiions()));
                    return;
                }

                // EVERYTHING ELSE
                if (!state.isOpened() && exception != null) {
                    Log.e(TAG, "Unable to login in");
                    exception.printStackTrace();
                    if (callback != null)
                        callback.onError(exception);
                }
            }
        };

        _session.addCallback(scallback);
        _session.openForPublish(request);
    }

Я думаю, что мне нужен запрос на установку, но я не могу найти решение, как это исправить. Может ли кто-нибудь дать мне несколько намеков?


person A.S.    schedule 19.11.2013    source источник
comment
Какие разрешения вы запрашиваете? Вам нужно разделить разрешения на чтение и публикацию, и прежде чем вы сможете запросить разрешение на публикацию, вам нужно сначала получить как минимум basic_info, что является разрешением на чтение. Если вы ТОЛЬКО делаете openForPublish без прав на чтение, вы получите эту ошибку.   -  person Ming Li    schedule 19.11.2013
comment
Спасибо, час назад разобрался. Но напишите это как ответ, и вы получите повторения   -  person A.S.    schedule 19.11.2013


Ответы (1)


Вам нужно разделить разрешения «чтение» и «публикация», и прежде чем вы сможете запросить разрешение на публикацию, вам нужно сначала получить как минимум «basic_info», что является разрешением на чтение.

Если вы ТОЛЬКО делаете openForPublish без прав на чтение, вы получите эту ошибку.

person Ming Li    schedule 19.11.2013
comment
Привет MingLi, у меня такая же проблема. Не могли бы вы рассказать мне, как разделить разрешение READ и PUBLISH, потому что, когда я разделил их на setReadPermission и setPublishPermission, это привело к ошибке. Мое разрешение запроса: authButton.setReadPermissions(Arrays.asList(basic_info, user_friends, read_friendlists, manage_friendlists)); - person tana; 04.06.2014
comment
Примечание. Когда я использую это приложение, все в порядке. Но когда его использует другой, он приходит к Прокси-приложение не может запрашивать разрешения на публикацию без предварительной установки. - person tana; 04.06.2014
comment
@tana у тебя есть решение для разных разрешений. Поделись, пожалуйста. - person Kalu Khan Luhar; 17.12.2014
comment
Я обнаружил, что должен получить одобрение от Facebook, прежде чем поделиться своим приложением с другом. - person tana; 18.12.2014