来自新手的fb.login问题 - 如何实现display = touch?

时间:2011-09-08 18:44:36

标签: jquery mobile oauth facebook

我正在开发移动设备,我有一个简单的应用程序,可以在webview中启动页面(没有浏览器工具栏,地址栏等)。由于这个浏览器配置无法真正处理弹出窗口,我如何实现它不是为了启动弹出窗口而是为oauth调用简单的url?此外,我还想在以下代码中使用display =“touch”功能:

jQuery(document).ready(function($){
if ( window.FB ) {
    FB.init({appId: '123456789000000',
        status: true,
        cookie: true,
        xfbml: true});
    $( 'html' ).attr( 'xmlns:og', 'http://opengraphprotocol.org/schema/' );
    $( 'html' ).attr( 'xmlns:fb', 'http://www.facebook.com/2008/fbml' );
}
});

function fbc_login() {
    if ( window.FB ) {
        FB.login( function( response ) {
            if ( response.session ) {
                window.location = 'http://www.mobii.hu/';
                }
            }, 
            { perms: 'email' 
            });
    }
};
function fbc_logout() {
    if ( window.FB ) {
        FB.logout( function( response ) {
            window.location = 'http://www.mobii.hu/index.php?option=com_comprofiler&task=logout&Itemid=2';
            });
        }
    };
function fbc_unjoin() {
    if ( window.FB ) {
        if ( confirm( 'Are you sure you want to unjoin http://www.mobii.hu?' ) ) {
        FB.api({
            method: 'Auth.revokeAuthorization' }, function( response ) {window.location = 'http://www.mobii.hu/';});
        }
    }
};

jQuery(document).ready(function($){
    if ( window.FB ) { 
        FB.logout( function( response ) {} ); 
    }
});

非常感谢提前!

1 个答案:

答案 0 :(得分:2)

使用JS SDK,AFAIK,display =“touch”无法正常工作。这里最好的攻击计划是使用Facebook PHP SDK与JavaScript SDK协调一致的组合。我们的想法是使用PHP SDK的内置方法getLoginUrl()根据应用程序的配置,请求的权限等生成登录URL,然后将该URL传递给JavaScript函数。

PHP:

<?php
include('facebook.php');

$facebook = new Facebook(array(
    'appId' => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET
));

$loginUrl = $facebook->getLoginUrl(array(
    'req_perms' => 'email', // Non-OAuth 2.0 apps.
    /* 'scope' => 'email', */ // OAuth 2.0 apps.
    'display' => 'touch'
));
?>

你的fbc_login()函数应该只是:

<script type="text/javascript">
    function fbc_login() {
        document.location='<?php print $loginUrl; ?>';
    }
</script>

希望这有帮助!