я пытаюсь открыть страницу аутентификации Facebook в IFRAME, который я создал на своей странице, но проблема состоит в том, после того как страница загружается в iframe, и я нажимаю на iframe, страница аутентификации Facebook получает целую страницу в полном экране, и iframe добираются, исчезают.
https://graph.facebook.com/oauth/authorize?client_id=<id>&type=user_agent&redirect_uri=http://localhost:3662/test.web/pages/z.aspx&display=popup
вот мой URL, что я устанавливаю в iframe src атрибут
Я сам столкнулся с этим. Решение, которое я использовал?
И приблизительные шаги
// trigger this any way you want
window.open(
'https://graph.facebook.com/oauth/authorize?client_id=CLIENT_ID&display=popup&scope=PERM_LIST&redirect_url=http://example.com/oauth_redirect'
, 'authorize'
, 'width=600,height=350'
);
Это отображает окно аутентификации во всплывающем окне. Теперь следующий бит: что вы делаете с URL-адресом перенаправления (в моем примере, http://example.com/oauth_redirect
)
Параметр access_token в URL-адресе содержит токен OAuth - так что извлеките этот и делайте с ним все, что вам нужно (храните в куки, что угодно). А затем используйте JS для управления тем, что происходит со всплывающим окном и открывателем
<script type="text/javascript">
// Perhaps load the next page?
window.opener.location = 'http://example.com/canvas'
// close the popup
window.close();
</script>
См. Также эту соответствующую ветку форума .
Не уверен в этом, но я думаю, что форм-фактор «popup» предназначен для реальных всплывающих окон, вы должны попробовать форм-фактор «page» здесь
Это механизм безопасности; у пользователя мало способов определить, является ли ваш IFRAME действительно Facebook, или вы представляете что-то, что выглядит как Facebook. С полным URL в верхней части, это становится гораздо более прозрачным (да, они должны внедрить SSL с действительным сертификатом, чтобы действительно доказать это, но эй).
Вход в iframe запрещен по соображениям безопасности. Вместо этого используйте всплывающее окно. Вы можете сделать то, что предложил Питер, с помощью window.open
или использовать JS SDK, например: http://fbrell.com/auth/all-in-one .