Совсем недавно я сделал то же самое. Переместите кнопку из формы. Переместите его таким образом, чтобы щелкнув по нему, вы не отправите форму. Теперь используйте следующий код, чтобы запросить расширенные разрешения, а затем отправьте форму.
1 var fb = {
2 extendedPermissions: function () {
3 $("#submit_button").click(function (event) {
4 FB.Connect.showPermissionDialog("email,read_stream,publish_stream", function (perms) {
6 if (!perms) {
7 location.href="http://www.mysite.com/logout/";
8 } else {
9 $.post('/url_to_post_the_form', $('#form3').serialize(), function (data, textResponse) {
10 window.location.replace(data.redirect);
11 }, "json");
12 }
13 });
14 });
15 }
16 };
Строка 4 гарантирует, что при нажатии кнопки пользователю будет показан диалог разрешения.
Строка 7 Если пользователь не дает разрешения, он перенаправляется на выход из системы.
Строка 9, в противном случае вы публикуете содержимое формы в том месте, куда вы хотите его отправить. Убедитесь, что он возвращает URL-адрес перенаправления в формате JSON, куда вы хотите, чтобы ваш пользователь приземлился, когда он дает вам разрешение и когда содержимое формы успешно публикуется.
Строка 10 фактически перенаправляет пользователя на URL, который появился как JSON в последнем пост-запросе AJAX.
НТН