Facebook access_token недействителен - PullRequest
1 голос
/ 31 июля 2011

Я создаю небольшой сайт для мероприятия.Идея состоит в том, чтобы добавить присутствующих на мероприятии в 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.1300b2B2B20000B2B2R2B2B2A0B2B2B2B2B2A-1146858041 | cjCkHZqquyyFyX2dY0q2YCaSyy0

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

Возможно ли это вообще?Thanx!

Ответы [ 3 ]

0 голосов
/ 01 августа 2011

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

0 голосов
/ 01 августа 2011

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

0 голосов
/ 31 июля 2011

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

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

...