В вашем приложении iframe canvas, если пользователь уже авторизовал ваше приложение, подписанный запрос будет содержать user_id и oauth_token, поэтому нет необходимости перенаправлять пользователя на страницу «авторизации».Вот несколько примеров того, что может содержать подписанный запрос:
Пользователь не авторизовал приложение:
signed_request =
{
"algorithm":"HMAC-SHA256",
"issued_at":1299083443,
"user":{"country":"ca","locale":"en_US","age":{"min":21}
}
Пользователь уже авторизовал приложение:
signed_request = {
"algorithm":"HMAC-SHA256",
"expires":1299092400,
"issued_at":1299085507,
"oauth_token":access_token,
"user":{"country":"ca","locale":"en_US","age":{"min":21}},
"user_id":user_id
}
Если вы не видите user_id и oauth_token, вы можете использовать технику JavaScript window.top.location.href.Если вы видите user_id и oauth_token, то нет необходимости просить пользователя аутентифицировать ваше приложение, потому что он / она уже это сделал.Другими словами, если пользователь авторизовал ваше приложение 1 января, а затем вернулся 10 января, то подписанный подпись уже будет содержать user_id и oauth_token при посещении 10 января.
Это метод, который яиспользовать.Надеюсь, это поможет.
ОБНОВЛЕНО 7 марта 2011 г. в ответ на комментарий BrynJ ниже.
Чтобы получить подписанный запрос, вы должны убедиться, что «OAuth 2.0 for Canvas»"включен в настройках вашего приложения (его можно найти на вкладке" Дополнительно "при редактировании настроек здесь http://www.facebook.com/developers/apps.php). Это включено по умолчанию для всех новых приложений, но если у вас старое,Вам нужно будет включить его самостоятельно. Кроме того, обратите внимание на параметр «POST for Canvas» на той же вкладке «Дополнительно». Если он включен, то подписанный_просмотр передается в теле POST (например, signature_request = 12345). Если он отключенЗатем в строке запроса передается подписанный подпись.
Получив подписанную подпись, вам нужно будет проверить и декодировать ее, чтобы получить user_id и oauth_token. У Facebook есть действительно хороший пример:
http://developers.facebook.com/docs/authentication/signed_request/
Кстати, вы захотите включить «POST for Canvas», так как Facebook будет переключать все приложения iframe на это 12 марта. Подробнее здесь: http://developers.facebook.com/docs/canvas/post/