我正在建立一个通过电话差距运行的应用程序网站。手机差距只是检查用户有互联网连接,并将外部网络应用程序加载到框架中。我可以在没有blib的情况下浏览整个网站,但只要尝试登录到Facebook(PHP重定向或JavaScript SDK),应用程序突然重新获取其导航栏或打开一个新窗口(JavaScript SDK)。phonegap - 使用外部网站作为应用程序 - Facebook登录
有反正我可以防止这种情况吗?
问候
我正在建立一个通过电话差距运行的应用程序网站。手机差距只是检查用户有互联网连接,并将外部网络应用程序加载到框架中。我可以在没有blib的情况下浏览整个网站,但只要尝试登录到Facebook(PHP重定向或JavaScript SDK),应用程序突然重新获取其导航栏或打开一个新窗口(JavaScript SDK)。phonegap - 使用外部网站作为应用程序 - Facebook登录
有反正我可以防止这种情况吗?
问候
这是它如何工作的本地或网络,而不打补丁的SDK代码,所有的应用程序。
这可能是可以做到的,但需要挖掘代码。问题是你真的需要它吗?这是一个理想的行为。
您可以尝试使用PhoneGap Facebook插件并启用单一登录,以便本地Facebook应用程序(如果存在)将被打开,而不是浏览器对用户进行身份验证。
顺便说一句,
应用程序只是外部网站包装大多数被拒绝在应用程序商店。
更新:
哪里是一些点,可能是在answer (by Facebook employee)到类似的问题How can I use an access token to circumvent FB.login()也很有帮助。
也看看ChildBrowser PhoneGap插件(和Example)。
它花了一些工夫,但使用ChildBrowser插件,我设法登录! (这是为Android)我已经使用了一些facebook连接插件的代码,它没有为我工作,重新写了一些东西,所以我可以理解它,现在可以工作。 Chears Juicy Scripter!
var fb_success = 'https://www.facebook.com/connect/login_success.html';
var fb_logout = 'https://www.facebook.com/connect/login_failed.html';
var fb_logout_ = 'http://m.facebook.com/logout.php?confirm=1&next=' + fb_logout;
var authorize_url = '';
var my_client_id = '##################';
var my_secret = '######################';
var my_type = 'user_agent';
var my_display = 'touch';
var token = false;
var fb_code = false;
var device_ready = false;
var ajax_url = '';
function logged_in(){
// alert('do what you need to do!');
}
function fb_force_logout(){
}
function fb_auth_check(){
console.log('fb_auth_check()');
if(fb_code !== false) {
console.log('ajax test instigated...');
ajax_url = 'https://graph.facebook.com/oauth/access_token?client_id=' + encodeURIComponent(my_client_id) + '&client_secret=' + encodeURIComponent(my_secret) + '&code=' + encodeURIComponent(fb_code) + '&redirect_uri=' + fb_success;
$.ajax({
url: ajax_url,
type: 'POST',
success: function(html){
token = html.split("=")[1];
console.log('success! token = ' + token);
window.plugins.childBrowser.close();
fb_init();
},
error: function(error) {
console.log('there was an error...' + ajax_url);
window.plugins.childBrowser.close();
}
});
}
}
function fb_track_redirects(loc){
console.log('redirect tracked... ' + loc);
if (loc.indexOf(fb_success) >= 0 || loc.indexOf(fb_success) > -1) {
fb_code = loc.match(/code=(.*)$/)[1]
console.log('success redirect... fb_code=' + fb_code);
fb_auth_check();
window.plugins.childBrowser.close();
} else if (loc.indexOf(fb_logout) >= 0 || loc.indexOf(fb_logout) > -1) {
window.plugins.childBrowser.close();
}
}
function inner_init(){
console.log('inner_init()');
if(token === false) {
console.log('token was false...');
authorize_url += "https://graph.facebook.com/oauth/authorize?";
authorize_url += "client_id=" + encodeURIComponent(my_client_id);
authorize_url += "&redirect_uri=" + encodeURIComponent(fb_success);
authorize_url += "&display=" + encodeURIComponent(my_display);
authorize_url += "&scope=publish_stream,offline_access";
console.log('instigated location change...');
window.plugins.childBrowser.onLocationChange = function(loc){
fb_track_redirects(loc);
}
console.log('open Facebbok login window');
window.plugins.childBrowser.showWebPage(authorize_url);
}else{
logged_in();
}
}
function fb_init(){
console.log('fb_init()');
if(device_ready === false) {
console.log('first device run...');
document.addEventListener("deviceready", function(){
device_ready = true;
console.log('device ready...');
inner_init();
}, false);
}else{
inner_init();
}
}
$(document).ready(function(){
$('#login').bind('click', function(){
fb_init();
return false;
})
});
</script>
他们为什么?你怎么会知道这事? – 2012-03-28 17:48:06
稍微阅读后,我认为你是错的http://stackoverflow.com/questions/5478848/does-apple-reject-mobile-web-shell-applications你不知道这个游戏做什么,你只是假设它是一个“简单的站点” – 2012-03-28 17:54:21
@PhilJackson,重新阅读[回答这个问题](http://stackoverflow.com/a/5478893/155033),这正是我在BTW中所说的。这有点超出了问题的范围。 – 2012-03-28 18:15:25