Я пытаюсь заняться созданием приложений для Facebook, но у меня возникают проблемы с авторизацией, работающей по схеме перенаправления внутри холста.
Используя javascript api, я довольно легко заработал во всплывающей схеме:
$("#loginButton").click(function(e) {
FB.login(function(response) {
if (response.perms) {
perms();
}
}, {perms : 'publish_stream'});
Но всплывающее окно должно быть лишним лишним кликом, потому что любое другое приложение, которое я вижу, запрашивает авторизацию, прежде чем даже показать вам целевую страницу. Как это:
http://i.imgur.com/yBGzL.png
Я полагаю, они просто используют схему перенаправления. Поэтому я потратил весь день, пытаясь найти разные способы:
header("Location: https://graph.facebook.com/oauth/authorize?client_id=" . $gAppId . "&redirect_uri=" . urlencode($gUrl) . "&perms=publish_stream");
header("Location: http://www.facebook.com/login.php?v=1.0&api_key=" . $gApiKey . "&next=" . urlencode($gUrl) . "&canvas=");
header("Location: http://www.facebook.com/connect/uiserver.php?app_id=" . $gAppId . "&next=" . urlencode($gUrl) . "&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request");
Но все они, вместо того, чтобы показывать запрос на авторизацию, показывают такую ссылку:
http://i.imgur.com/bLwPQ.png
Весело, если я открою адрес iframe в новой вкладке, я получу запрос на авторизацию, как я хотел. Но я хочу, чтобы он отображался немедленно, без дополнительного клика, как и любое другое приложение.
Вот пример приложения, которое выполняет авторизацию и запрашивает разрешения за один раз, в форме перенаправления, даже до отображения целевой страницы:
www.facebook.com / send.fortune.cookies
Как они это делают?