javascript:需要上传文件“,”输入“:”OAuthException Facebook用户已经注册

时间:2015-09-23 15:27:04

标签: javascript facebook facebook-graph-api sdk image-uploading

我正在使用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时间线 提前致谢

1 个答案:

答案 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/