Facebook Graph API: повторно использовать строку подтверждения кода? - PullRequest
1 голос
/ 22 сентября 2010

Раздел авторизации на этой странице developers.facebook.com / docs / api содержит хорошее описание того, как выполнить аутентификацию для пользователя на моем приложении Facebook. Однако в моем сценарии я не могу заставить его работать так, как я хочу. Вот как это должно работать:

  1. Пользователь заходит на мою страницу входа и нажимает ссылку «Войти через Facebook».

  2. Пользователь перенаправляется на graph.facebook.com / oauth / authorize? [Некоторые параметры] и авторизует мое приложение Facebook для доступа к своим данным. Facebook перенаправляет обратно на мой сайт.

  3. Мой сайт проверяет параметр Code, вызывает Facebook, чтобы заменить его токеном доступа, а затем позволяет пользователю подключить свою учетную запись на моем сайте к учетной записи Facebook. Токен доступа сохранен в учетной записи пользователя на моем сайте.

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

Проблема: каждый раз, когда код (из graph.facebook.com / oauth / authorize) заменяется на токен доступа, токен меняется. Поскольку этот токен используется для поиска пользователя в базе данных моего сайта, соответствующие сбои.

Мой вопрос сейчас: как мне решить эту проблему? Может ли параметр Code из graph.facebook.com / oauth / authorize сохраняться и использоваться снова и снова для поиска пользователя? Или есть другой способ сделать это? Я действительно предпочел бы НЕ использовать Javascript API, поскольку это доставляет мне массу других неприятностей.

[Извините за ссылки, я новый пользователь и не могу публиковать более одной ссылки]

1 Ответ

1 голос
/ 22 сентября 2010

Ах, я решил: после получения access_token я просто вызываю graph.facebook.com/me, чтобы получить идентификатор пользователя. Это сохраняется в моей базе данных. В следующий раз я совпаду с этим идентификатором.

...