2012-04-14 2 views
2

Я хочу предоставить услугу, используя facebook api для третьих лиц. Возможно ли, чтобы мы делили токены доступа? Если сторонняя сторона предоставляет мою службу токен доступа пользователя, могу ли я получить доступ к этим данным пользователей, даже если мой app_id & секрет не соответствует приложению, которое его запросило?Совместное использование токенов доступа Facebook через приложения

Должен ли пользователь пройти отдельный поток oauth на моем сайте, даже если он уже завершил его для другого третьего лица?

Спасибо.

Кен

ответ

3

Относительно:

Можно ли нам разделить маркеры доступа?

и

я могу получить доступ к данным пользователей, что даже если мой app_id & секрет не совпадают приложение, передавшего его?

Ответ No. Из спецификации OAuth2 section 10.3:

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


Если у меня есть пользователи пройти через отдельный поток OAuth на моем сайте, даже если они уже закончили его на другой третьей стороне?

Ответ Yes. Если вы используете facebook в качестве сервера авторизации и перезапустите поток oauth снова, ваш пользователь должен будет только одобрить ваше другое приложение (третье лицо).

+5

Что делать, если у вас есть приложение и веб-сайт, которые работают вместе (скажем, Twitter и приложение Twitter). Если Twitter хотел использовать OAuth2 для аутентификации с третьей стороной (например, Google), вы должны были бы аутентифицировать как приложение, так и веб-сайт отдельно? Кажется очень неуклюжим и плохой опыт для пользователя. – Timmmm

+0

Я бы интерпретировал цитату из спецификаций как «да, это возможно», но «нет, вы не должны этого делать», потому что это нарушит безопасность. Если было невозможно обменять токены, вам не нужно было бы их защищать. – JRI

2

Каждый маркер доступа выдается только для одного приложения - это не может быть использована с различными идентификаторами приложений.

8

Даже этот токен доступа пользователя выдается только для одного приложения, его можно легко использовать из любого другого приложения.

Пример:

  1. Получить маркер доступа для приложения "Graph API Explorer" здесь https://developers.facebook.com/tools/explorer/?method=GET&path=me и сделать запрос - вы будете видеть ваши данные.
  2. Скопируйте токен доступа и откройте другую машину | браузер и перейдите на страницу https://graph.facebook.com/me?access_token=[access_token] - вы по-прежнему сможете получать информацию о своем пользователе в Facebook!

Здесь https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/ он отметил, что

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

+0

Этот отрывок из политики данных FB пригоняет ее - очевидно, вам нужно иметь возможность разделить токен между вашим родным приложением и вашим фоновым подключением, и вы можете это сделать, потому что они также используют эксклюзивный доступ к сертификату FB oauth API , Конечно, ОП на самом деле не просил об этом. – kingdango

+0

@kingdango, двум приложениям не нужно «предоставлять эксклюзивный учетный доступ к API-интерфейсу FB oauth». Вы можете получить токен доступа из приложения FB «API-интерфейс графического интерфейса» и использовать его в своем приложении. –

Смежные вопросы