我正在建立一個通過電話差距運行的應用程序網站。手機差距只是檢查用戶有互聯網連接,並將外部網絡應用程序加載到框架中。我可以在沒有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