Titanium - Авторизация через Facebook() - Произошла ошибка

Я использую (Appcelerator) Facebook API Titanium, чтобы позволить пользователям входить в свои учетные записи facebook. На Android часто сразу после вызова авторизации, когда открывается окно facebook, отображается страница с надписью:

An error occurred with MY-FB-APP-NAME. Please try later
API Error Code: 110
API Error Description: Invalid user id
Error Message: Missing user cookie (to validate session user)

Закрытие окна и запуск заново обычно решает проблему. Однако, поскольку это происходит, возможно, в 70% случаев (при вызове авторизации в первый раз в «сеансе»), это большая проблема с удобством использования.

Кто-нибудь знает, как это исправить?

Я использую Titanium 2.1.0 и тестирую устройство Android 2.3.6. Большое спасибо


person Community    schedule 26.09.2012    source источник
comment
Я получаю ту же проблему. Вы исправили это   -  person glo    schedule 13.02.2013


Ответы (2)


На самом деле проблема сохраняется из-за кеша facebook. нам нужно очистить кеш, когда вы выходите из системы, используйте приведенный ниже код, он отлично работает

Titanium.Facebook.appid = "XXXXXXXXXXXXXXXXXX";
 Titanium.Facebook.permissions = ['publish_stream', 'read_stream'];


   var fbButton =  Ti.UI.createButton({
    top: 68,
    width:290,
    height:52,
    backgroundImage:"images/login/facebook.png"
});


 fbButton.addEventListener('click', function() {
if(Titanium.Facebook.loggedIn){
    Titanium.Facebook.logout()
    return
}
 Titanium.Facebook.authorize();

  });




Ti.Facebook.addEventListener('login', function(e) {
if (e.success) {
    win.close()
} else if (e.error) {
    alert(e.error);
} else if (e.cancelled) {
    alert("Canceled");
}
 });

  Titanium.Facebook.addEventListener('logout', function(e) {
    var url = 'https://login.facebook.com';
    var client = Titanium.Network.createHTTPClient();
    client.clearCookies(url);
});
person sundar nataraj    schedule 01.03.2013

Попробуйте этот код, он в сплавах и надеюсь, что он вам поможет, иначе я проверю и дам вам знать

index.xml

<Alloy>
<Window class="container">
    <LoginButton id="fbButton" ns="Alloy.Globals.Facebook"/>
</Window>
</Alloy>

index.js

var fb = Alloy.Globals.Facebook;
fb.appid = xxxxxxxxx;
fb.permissions = ['publish_stream', 'create_event', 'email'];
$.fbButton.style = fb.BUTTON_STYLE_WIDE;
fb.addEventListener('login', function(e){
    if(e.success){
        fb.requestWithGraphPath('me', {}, 'GET', function(e) {
            if (e.success) {
                //alert(e.result);
                var response = JSON.parse(e.result);
                var email = response.email;
                var name = response.name;
                var gender = response.gender;
                alert(name+' '+email+' '+gender);
                alert('Logged in Successfully');
            } else if (e.error) {
                alert(e.error);
            } else {
                alert('Unknown response');
            }
        });
    }
});

сплав.js

Alloy.Globals.Facebook = require('facebook');
person Guts    schedule 01.10.2013
comment
Распечатайте с помощью Ti.API.info(response) в консоли и посмотрите, что и все, что вам нужно для вашего приложения, из facebook, и получите и используйте это. - person Guts; 01.10.2013