У меня проблема с механизмом Facebook OAuth 2.0.В принципе, все работает хорошо, за исключением одного: когда пользователь перенаправляется на страницу, где он должен авторизовать / разрешать приложение, но нажимает кнопку «Отмена», примерно половину времени он перенаправляется на страницу, указанную вredirect_uri (правильное поведение - поэтому я перенаправляю его на страницу, объясняющую, почему нам нужны разрешения) и примерно половину времени он попадает на домашнюю страницу FB (неправильное поведение).Я просто не могу понять, что я делаю неправильно.Это примерно то, что я делаю:
window.fbAsyncInit = function()
{
FB.init({
appId : <appid>, // App ID
channelUrl : 'http://www.mydomain.com/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.getLoginStatus(function(response)
{
//console.log('getLoginStatus response: ',response);
if (response.authResponse)
{
//user is already logged in and connected
top.location.href='http://apps.facebook.com/<appname>';
}
else
{
//app is not authorized or user is logged out
var redirectURL = 'http://www.facebook.com/dialog/oauth/?client_id='+client_id+'&scope='+scope+'&redirect_uri='+encodeURIComponent('http://apps.facebook.com/<appname>')+'&response_type=token';
top.location.href = redirectURL;
}
});
};
Есть идеи, что я делаю неправильно?Как уже говорилось в противоположном случае, когда пользователь соглашается авторизовать приложение, оно работает просто отлично.Я все еще работаю в режиме «песочницы» и еще не купил сертификат SSL, поэтому я все еще везде ссылаюсь на http вместо https.
Спасибо!
PS Такое странное поведение никогда не происходит, когдапользователь нажимает кнопку «Не разрешать» при запросе дополнительных разрешений в следующий раз, когда пользователь обращается к моему приложению.Например, пользователь входит в систему в первый раз и авторизует приложение, но не допускает дополнительных разрешений.Затем Facebook перенаправляет его на redirect_uri и дает мне access_token, поэтому я перенаправляю пользователя в приложение (пока все хорошо).В следующий раз, когда пользователь получит доступ к приложению, я обнаружу, что он авторизовал приложение, но у меня нет всех необходимых разрешений, поэтому я снова перенаправляю его на механизм OAuth 2.0.На этот раз пользователь AGAIN не разрешает дополнительные разрешения, и Facebook ВСЕГДА перенаправляет пользователя на redirect_uri, что является ожидаемым поведением.