Arhn - архитектура программирования

Facebook access_token недействителен

Я создаю небольшой сайт для мероприятия. Идея состоит в том, чтобы добавить на этот сайт участников мероприятия в facebook. Проблема в том, что обслуживающей службе нужен access_token. Я не хочу, чтобы пользователь входил в приложение, я просто хочу использовать приложение access_token. Но, похоже, это не работает.

У меня есть следующий php-код для получения access_token:

// get facebook auth_token
$FB_APP_ID = '****';
$FB_APP_SECRET = '***';
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $FB_APP_ID . "&client_secret=" . $FB_APP_SECRET . "&grant_type=client_credentials";
$app_token = file_get_contents($token_url);
parse_str($app_token); // creates: $access_token

В javascript я использую следующий код:

/**
 * Gets all the attending Users
 * @param function callback: the function to call, when data loading is ready
 * @param function callback: the function to call, when data loading is broken
 * @return void
 */
this.getAttending = function(callback, errorHandler) 
{
    FB.api('/' + this.eventId + '/attending', function(response) {
        if(response.error) {
            errorHandler(response.error['message']);
        } else {
            callback(response.data);
        }
    } , {access_token: facebook.accessToken} );    
}

Я получаю сообщение об ошибке: Недействительный токен доступа OAuth.

Токен доступа выглядит так: 111737995591905 | l9e3niEMM1RsIUhwHZv3pn3c19M

Токен доступа пользователя выглядит так: 145634995501895 | 2.AQBcWfbvdzhloLYc.3600.1312138800.1-1146858041 | cjCkHZqquyyFyX2dY0q2YCaSyy0

Когда я пытаюсь использовать токен доступа пользователя, все работает нормально. Но когда я жестко закодирую токен, это не сработает для других пользователей. Когда я пробую токен, который сервер проанализировал для меня, я получаю недопустимое действие токена. Кто-нибудь знает решение для этого? Это публичное мероприятие, и я не хочу, чтобы пользователь входил в систему, пока он / она не узнает, кто его посещает?

Это вообще возможно? Спасибо!


Ответы:


1

Вы кодировали токен при жестком кодировании? | должно быть% 7C. Не могу придумать что-нибудь еще, что могло пойти не так, как надо

01.08.2011
  • Я не кодировал access_token. В этом нет необходимости, потому что я вызываю веб-сервис с помощью API javascript, а не с помощью URL-адреса. Это тоже было моей проблемой: я попытался поместить переменную запроса expires за access_token. Вероятно, это было декодировано и возвращено в недопустимый access_token. Кажется, теперь он работает с коротким access_token. 01.08.2011

  • 2

    Почему бы не получить токен доступа для себя, а затем жестко закодировать его в своем приложении (при условии, что он работает на защищенном сервере, где никто другой не может украсть учетные данные). Затем любой, кто посещает страницу, может просматривать список гостей, используя ваш собственный токен доступа, которому разрешено просматривать список.

    Тип предоставления client_credentials не предназначен для доступа к пользовательским данным, только к данным приложения. Я не знаю, как работает остальная часть приложения, но предполагаю, что вам нужен токен доступа пользователя для просмотра пользовательских данных.

    31.07.2011
  • Поскольку у access_token есть срок годности. На данный момент я выбрал решение javascript, потому что оно загружает информацию асинхронно. Таким образом, токен доступа не будет находиться в безопасной среде. Мне не нужны учетные данные пользователя. Я просто хочу показать фотографию присутствующих. Это простой веб-сайт для мероприятий, поэтому нет необходимости позволять приложению запрашивать разрешения пользователя. Требуются только данные публичного мероприятия. 31.07.2011
  • Довольно просто создать единую конечную точку API, которая обслуживает список, не раскрывая ваш токен доступа. 01.08.2011

  • 3

    Способ, которым я обошел это, был назначением разрешения offline_access, он генерирует токен доступа, срок действия которого никогда не истекает, поэтому вы можете использовать его бесконечно. Теоретически вы должны разрешить только свою учетную запись Facebook для извлечения данных о событиях. После этого вы можете без проблем просматривать и размещать информацию о вашем мероприятии на своем веб-сайте.

    01.08.2011
  • Это довольно грязный обходной путь: все будут использовать MY access_token. Это тоже было бы видно всем. Я не знаю, может ли это нанести ущерб моей учетной записи, но мне это решение не нравится. Я нашел решение (см. Выше). В любом случае спасибо :) 01.08.2011
  • Пока вы определяете, какие другие разрешения вы хотите предоставить приложению доступ (события IE), то пока вы не возражаете, чтобы люди могли видеть, какие события вы посещаете (я понимаю, почему это может быть проблемой безопасности ) то обычно это не проблема. В случае, если я использовал это, это было для общедоступной страницы, которая не скрывала никакого контента от кого бы то ни было, так что, как вы можете видеть, на самом деле это не проблема. Однако рад, что вы нашли решение! 01.08.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..