2

Facebookに動画をアップロードするときに問題が発生しました。

私はAndroid用のFacebookSDKを使用しています:https ://github.com/facebook/facebook-android-sdk次の権限を持つアクセストークンを取得します: "publish_stream"、 "email"、 "video_upload"、 "publish_actions"

次に、トークンをサーバーに送信します。サーバーはビデオをアップロードする必要があります。サーバーは、次のコードを使用してビデオをアップロードしようとします。

string fullurl = string.Format("https://graph-video.facebook.com/me/videos?title={0}&description={1}&access_token={2}", HttpUtility.UrlEncode(fileName), HttpUtility.UrlEncode(description), token);

Facebookはエラーを返します:

System.Net.WebException: The remote server returned an error: (400) Bad Request.
   at System.Net.WebClient.UploadFile(Uri address, String method, String fileName)
   at System.Net.WebClient.UploadFile(String address, String fileName)

しかし、次のリンクでトークンを確認すると、https ://graph.facebook.com/me?access_token = myTokenFacebookはユーザー情報を返します。これは、トークンが有効であることを意味します。しかし、このリクエストがエラーコードを返す場合、エラーコードに関する情報はどこにありますか?

このソリューションは、一部のユーザーには完全に機能し、他のユーザーには不安定に機能します(6本のビデオのうち4本のアップロードに失敗しました。Facebookは「リモートサーバーによって接続が閉じられました」と返します)。また、 「リモートサーバーがエラーを返しました:(400)不正なリクエスト」というエラーで一部のユーザーが機能していません。

私のコードの何が問題になっていますか?

4

1 に答える 1

0

私は問題を解決しました。facebook SDK for .NET http://facebooksdk.net/を使い始めましたが、うまくいきました。

      Facebook.FacebookClient fb = new FacebookClient(facebookEditTask.facebookToken);
      fb.PostCompleted += (o, e) =>
      {
           if (e.Cancelled || e.Error != null)
           {
                return;
           }

           var result = e.GetResultData();
           facebookVideoUrl = CreateLinkToVideo(result.ToString());
       };

       dynamic parameters = new ExpandoObject();
       parameters.source = new FacebookMediaStream
       {
             ContentType = "video/mp4",
              FileName = Path.GetFileName(facebookEditTask.FilePath)
       }.SetValue(File.OpenRead(facebookEditTask.FilePath));

       parameters.message = fbMessage;

       Task t = fb.PostTaskAsync("me/videos",
                    new { message = fbMessage, parameters.source });
于 2013-07-18T04:29:12.513 に答える