Php 使用Ajax将图像发布到Facebook:授权对话框不工作
我正在尝试使用ajax将图像通过PHPSDK发布到facebook上(这是我第一次尝试使用ajax上传),但当用户单击按钮时,FB应用程序。如果用户已授权应用并登录,则不会显示授权对话框,然后图像发布成功:以下是我的代码: view.php?id=xxxx uploadfb.php包含所有必要的fb登录代码和图像发布 当用户已经授权应用程序时。单击上载按钮图像上载到facebook并返回成功。 当新用户单击facebook应用程序授权对话框时出现问题,它返回错误 还尝试将getLoginUrl参数中的重定向uri更改为uploadfb.php?id=xxxxx 但仍然没有出现应用程序授权 出于测试目的,我放置了一个单独的按钮“登录facebook”,只有登录代码 login.php 我得出的结论是作者。对话框未出现在ajax请求中。 现在,当用户第一次使用登录按钮登录,然后单击上载按钮时,结果是成功 图片发布成功。 但如果新用户直接(未经首次授权)点击上传按钮,则会出现错误 我不想放置两个单独的按钮,所以用户首先单击“登录”,然后单击“上载”按钮。 当用户点击上传按钮时需要,如果用户还没有身份验证。“我的应用程序授权”对话框窗口打开,但此处不起作用Php 使用Ajax将图像发布到Facebook:授权对话框不工作,php,ajax,facebook,facebook-php-sdk,Php,Ajax,Facebook,Facebook Php Sdk,我正在尝试使用ajax将图像通过PHPSDK发布到facebook上(这是我第一次尝试使用ajax上传),但当用户单击按钮时,FB应用程序。如果用户已授权应用并登录,则不会显示授权对话框,然后图像发布成功:以下是我的代码: view.php?id=xxxx uploadfb.php包含所有必要的fb登录代码和图像发布 当用户已经授权应用程序时。单击上载按钮图像上载到facebook并返回成功。 当新用户单击facebook应用程序授权对话框时出现问题,它返回错误 还尝试将getLoginUrl参
Ajax代码中缺少什么?或者无法显示身份验证。ajax请求中的对话框。这方面的任何替代解决方案也会有所帮助。感谢您给我时间。您可以尝试使用JavaScript登录方法查看Ajax调用是否有效,而不是使用PHP登录方法:
document.getElementById("uploadfb").onclick=function(e){
e.preventDefault();
// id hidden input type in a form
id = $("#id").val();
FB.login(function(response) {
if (response.authResponse) {
$.ajax({
type: "GET",
url: "uploadfb.php",
data: {id: id},
dataType : 'json',
forceIframeTransport: true, //force use iframe or will no work
autoUpload : true,
success: function(result){
alert("Success");
},
error: function(errorThrown){
alert("Error");
}
});
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
return false;
};
我基本上用FB.login()方法包装了Ajax调用,因此要求用户首先登录,然后进行Ajax调用以上载文件。它现在应该对登录和未登录的用户都有效
$id=$_GET['id'];
require_once 'config.php';
$user = $facebook->getUser();
if($user)
{
// We have a user ID, so probably a logged in user.
try {
$user_profile = $facebook->api('/me');
}
catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
} else {
$params = array(
'scope' => 'publish_stream,user_photos'
);
$loginUrl = $facebook->getLoginUrl($params);
header('location:' .$loginUrl);
}
///// then image post code
if($user)
{
$args['image'] = '@' . realpath($id);
$post = $facebook->api('/me/photos', 'post', $args);
}
require_once 'config.php';
$user = $facebook->getUser();
if($user)
{
// We have a user ID, so probably a logged in user.
try {
$user_profile = $facebook->api('/me');
}
catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
} else {
$params = array(
'scope' => 'publish_stream,user_photos'
);
$loginUrl = $facebook->getLoginUrl($params);
header('location:' .$loginUrl);
}
document.getElementById("uploadfb").onclick=function(e){
e.preventDefault();
// id hidden input type in a form
id = $("#id").val();
FB.login(function(response) {
if (response.authResponse) {
$.ajax({
type: "GET",
url: "uploadfb.php",
data: {id: id},
dataType : 'json',
forceIframeTransport: true, //force use iframe or will no work
autoUpload : true,
success: function(result){
alert("Success");
},
error: function(errorThrown){
alert("Error");
}
});
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
return false;
};