Вопрос по android, facebook-graph-api – Как отменить все разрешения Facebook с помощью Android SDK?

3

У меня проблема с отзывом разрешений Facebook с помощью Android SDK.

В моем приложении есть случай, когда я хочу отменить все разрешения. Согласно документации Facebook, вы можете использовать AsyncFacebookRunner для этого, и «если вы не укажете разрешение, это приведет к полной де-авторизации приложения».

Я сейчас так и делаю:

String method = "DELETE";
Bundle params = new Bundle();
params.putString("permission", "");

mAsyncRunner.request("/me/permissions", params, method, new RequestListener()
                     { ... }, null);

используя подпись запроса следующим образом:

void request(String graphPath, Bundle parameters, final String httpMethod,
             RequestListener listener, final Object state)

Кажется, что функция обратного вызова onComplete () возвращается нормально, но, по-видимому, не произвела авторизацию токена доступа. Я предполагаю это, потому что в следующий раз, когда я вызываю facebook.authorize (), он работает, не подталкивая пользователя на страницу входа в Facebook.

Есть идеи, что мне нужно изменить, чтобы полностью де-авторизовать токен доступа? Или есть другой / лучший способ сделать это? Большое спасибо

Если вы отправляете команду DELETE в / me / permissions, приложение facebook должно быть удалено из списка приложений, предоставленных пользователем Facebook.com / настройки? Вкладка = приложения). Приложение все еще появляется там? Если это так, команда DELETE не обрабатывается правильно. Используя действительный токен доступа, можете ли вы убедиться, что команда HTTP Delete работает для вас в Graph API Explorer? Я столкнулся с проблемой, что C # SDK не работает для меня, поэтому в крайнем случае я использовал javascript SDK для удаления разрешений. Возможно, javascript SDK подойдет и вам. DMCS
Я проверил, что приложение все равно появилось даже после того, как я выполнил запрос mAsyncRunner, чтобы удалить его - так что вы правы, что по какой-то причине оно не работает, хотя обратный вызов onComplete () возвращался без исключения. У меня есть действительный токен доступа; как я могу попробовать то же самое, используя http (то есть, какой URL-адрес делает то же самое)? gcl1
Инструмент Graph API Explorer - ваш друг :) Developers.facebook.com / инструменты / исследователь. Если там все работает правильно, попробуйте сделатьGET для меня / разрешений сразу же после выполненияDELETE. Иногда SDK лучше синхронизируются при выполнении GET, за которым следует DELETE (видно, что это произошло из первых рук). DMCS
Спасибо, я попробовал ваше предложение. HTTP-команда " Graph.facebook.com / мне / разрешения / PERMISSION_NAME? access_token = MY_ACCESS_TOKEN ". Я не был уверен, что добавить для PERMISSION_NAME, так как я пытаюсь деавторизовать все приложение, поэтому я попытался оставить его пустым (то есть" @ &quo Graph.facebook.com / мне / разрешений? access_token = MY_ACCESS_TOKEN "). Похоже, это тоже не удаляло приложение. Ответ был просто:" {"data": [{"Установлено": 1}]} "Любая идея, как установить PERMISSION_NAME, чтобы получить его полностью деавторизовать приложение? gcl1
Я запутался. Откуда появился PERMISSION_NAME? Чтобы отключить приложение, вы не видели PERMISSION_NAME. Поскольку вы не можете удалить приложение из инструмента проводника, я рекомендую вам убедиться, что вы используете действительный токен доступа. DMCS

Ваш Ответ

4   ответа
3

кто хочет сделать это в более поздних версиях API SDK / Graph. Похоже, что правильный способ сделать это сейчас, как показано здесьhttps: //developers.facebook.com/docs/graph-api/reference/user/permissions

new Request(
   session,
    "/me/permissions/{permission-to-revoke}",
    null,
    HttpMethod.DELETE,
    new Request.Callback() {
        public void onCompleted(Response response) {
            /* handle the result */
        }
    }
).executeAsync();

Оставляя/{permission-to-revoke} off второго параметра аннулирует все разрешения

Будет ли оно удалять приложение из FB? Tushar Gogna
Я успешно использовал GraphAPI. Это похоже на ваш код: GraphRequest request = GraphRequest.newDeleteObjectRequest (yourToken, "/" + yourUserId + "/ permissions", new GraphRequest.Callback () {@Override public void onCompleted (GraphResponse graphResponse) {}}); request.executeAsync (); funcoder
1

Facebook деавторизовать мое приложение и других, что невозможно деавторизовать приложение программным способом. К сожалению, приведенный выше вызов успешно возвращается к onCreate (), но ничего не делает для удаления / удаления приложения для пользователя.

Итог: похоже, что единственный способ сделать приложение доступным для пользователя - сделать это прямо в Facebook. Если кто-то знает по-другому, пожалуйста, скажите так - но в противном случае, не тратьте свое время на попытки! Благодарность

Этот ответ больше не верен, удаление в / me / permissions работает так, как опубликовано в другом месте. Jay
1

иси Facebook пользователя, используя последний SDK (у меня 4.1.1)

void deleteFacebookApplication(){
    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions", null, HttpMethod.DELETE, new GraphRequest.Callback() {
        @Override
        public void onCompleted(GraphResponse response) {
            boolean isSuccess = false;
            try {
                isSuccess = response.getJSONObject().getBoolean("success");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            if (isSuccess && response.getError()==null){
                // Application deleted from Facebook account
            }

        }
    }).executeAsync();
}
0

предложенный в вопросе, и он полностью де-авторизовал мое тестовое приложение. Протестировал его несколько раз, и он работал каждый из них.

Это также код, предложенный в официальной документации Facebook здесь:https: //developers.facebook.com/docs/mobile/android/build - Шаг 7

Похожие вопросы