我正在尝试使用 ajax 使用 PHP SDK 将图像发布到 facebook,(这是我第一次尝试使用 ajax 上传)但是当用户单击按钮时,FB App。如果用户已经授权应用程序并登录然后图像发布成功,则不会出现授权对话框:这是我的代码:
view.php?id=xxxx
document.getElementById("uploadfb").onclick=function(e){
e.preventDefault();
//id hidden input type in a form
id = $("#id").val();
$.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");
}
});
return false;
};
uploadfb.php 包含所有必要的 fb 登录代码和图片发布
$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);
}
当用户已经授权应用程序时。单击上传按钮图像上传到 facebook 并返回成功。当新用户点击然后facebook应用程序授权对话框没有出现它返回错误时出现问题
还尝试将 getLoginUrl 参数中的重定向 uri 更改为 uploadfb.php?id=xxxxx 但仍然没有出现应用程序授权。
出于测试目的,我放置了一个单独的按钮“使用 facebook 登录”,只有登录代码
登录.php
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);
}
我得出结论,Auth。对话框未出现在 ajax 请求中。现在,当用户第一次使用登录按钮登录时,然后单击上传按钮结果是成功图像发布成功。但是如果直接新建用户(没有第一次授权),点击上传按钮它会给出错误。
我不想放置两个单独的按钮,所以用户第一次单击登录,然后单击上传按钮。当用户点击上传按钮时想要,如果用户尚未授权。我的应用程序授权对话窗口打开,这在此处不起作用。
Ajax 代码中缺少什么?或者它不可能显示身份验证。ajax 请求中的对话框。对此的任何替代解决方案也将有所帮助。谢谢你给我时间。