我正在使用Facebook JavaScript SDK将照片上传到Facebook时间线。 最初我使用了这段代码,它起作用了:
<script language="javascript">
function test() {
var message = document.getElementById('txtMessage').value;
FB.login(function (response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
FB.api('https://graph.facebook.com/me/photos', 'post', {
message: message,
status: 'success',
access_token: access_token,
url: 'http://dotnetspeaks.com/xyz.jpg'
}, function (response) {
if (!response || response.error) {
alert('Error occured:' + response);
} else {
alert('Successfully posted on wall.');
}
});
} else {
alert('Interrupted.');
}
}, { scope: 'user_photos,photo_upload,publish_stream,offline_access' });
}
</script>
我首先添加了FB.init。 这段代码工作了一次,但后来又给了我一个错误,#34;用户已登录&#34;。 然后我找到FB.getLoginStatus()函数来检查用户是否登录。我改为代码
<script language="javascript">
function test() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
FB.api('https://graph.facebook.com/me/photos/uploaded', 'post', {
message: "hii",
status: 'success',
access_token: accessToken,
url: "images/brave_t.jpg"
}, function (response) {
if (!response || response.error) {
alert('Error occured:' + response);
} else {
alert('Successfully posted on wall.');
}
},{scope: 'publish_actions,photo_upload'});
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
// but has not authenticated your app
} else {
// the user isn't logged in to Facebook.
}
});
}
</script>
我添加了范围字段,以检查它是否可以作为&#34; {范围:&#39; publish_actions,photo_upload&#39;}&#34; 但是那也没有?工作。我一再纠结这个错误:&#34; message:&#34;(#324)需要上传文件&#34; 。
请帮我解决这个问题。 我想将图片上传到Facebook时间线 提前致谢
答案 0 :(得分:0)
网址必须是绝对的,您尝试使用相对路径:
url: "images/brave_t.jpg"
在第一个代码部分中,您正在以正确的方式执行此操作:
url: 'http://dotnetspeaks.com/xyz.jpg'
顺便说一句,没有photo_upload
权限,publish_actions
就是您所需要的。如果您需要有关FB.login和FB.getLoginStatus的更多信息,请查看以下文章:http://www.devils-heaven.com/facebook-javascript-sdk-login/