我正在使用(Appcelerator)Titanium的Facebook API让用户登录他们的Facebook帐户。在Android窗口打开后,通常会在调用授权后立即显示:
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设备上进行测试。 非常感谢
答案 0 :(得分:0)
实际上由于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);
});
答案 1 :(得分:0)
试试这个代码,它的合金,并希望它会帮助你,否则我会检查并让你知道
<强> 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');
}
});
}
});
<强> alloy.js 强>
Alloy.Globals.Facebook = require('facebook');