我想更改页面网址的位置,我更希望在单独的窗口中打开权限请求对话框。
这是使用的JavaScript:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'XXXXXXXXXXXXXXX',
status : true,
cookie : true,
xfbml : true
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
在单独的窗口中显示的对话框并未显示在所有浏览器中,这使得IE ...
PHP:
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXXXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// n or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,user_birthday,email,offline_access',
'next' => 'LINK HERE',
));
}
答案 0 :(得分:3)
不要试图破坏Facebook的JavaScript SDK,只需使用标准的OAuth身份验证,它允许您在没有JavaScript弹出窗口的情况下将用户重定向到身份验证或权限对话框。
请参阅Authentication documentation中的{em>服务器端流部分和OAuth dialog's documentation中的直接网址示例。请注意,后一文档中的example URL与您的第二个屏幕截图非常相似。