私はグラフAPIを使用して、概念実証Androidアプリを開発中です。私は自分のFacebookアプリのアルバムにビデオをアップロードしようとしています。AndroidでグラフAPI経由で動画をアップロードする際にエラーが発生しました
私がそうするように、コードのこの部分を使用するには:
String dataName = new File(getRealPathFromURI(this,data.getData())).getName();
Toast.makeText(this,dataName,Toast.LENGTH_LONG).show();
params.putString("filename", new File(getRealPathFromURI(this,data.getData())).getName());
params.putByteArray("source",k);
/* make the API call */
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/"+sProfile.getId()+"/videos",
params,
HttpMethod.POST,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
TextView textView = (TextView) findViewById(R.id.textView2);
textView.setText(response.toString()+" "+k.length);
Log.v("Response:",response.toString());
}
}
).executeAsync();
にもかかわらず、これはFacebookからsuggested methodにAndroidのと同等であり、私が働いて.mp4
ファイルをアップロードしようとしていることを、私はこのエラーを取得します。
{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400,errorCode: 352, errorType: OAuthException, errorMessage: Sorry, the video file you selected is in a format that we don't support.}}
は、それだけで「ソース」に設定されるようにアップロードする動画のファイル名を引き起こしAndroidのFacebookのSDK、中GraphRequest.javaにバグがあり、私には思えます。ここで
は、ライン2166および2167にGraphRequest.javaに、我々は以下を参照してください。
ライン2245年から2248年に同じファイル内public void writeBytes(String key, byte[] bytes) throws IOException {
writeContentDisposition(key, key, "content/unknown");
そしてwriteContentDispositionの引数:
public void writeContentDisposition(
String name,
String filename,
String contentType
)
べき、中大文字小文字のparams.putByteArray("source",k);
を "source"に設定し、フェイスブックのファイル拡張子は使用しません。
params.putString("filename", <FILENAME>);
を追加すると、ファイル名が間違ってsource
に変更されないため、単に機能しません。
ソースパラメータを含めて、あなたはファイルコンテナのタイプを示す正しい拡張子を持つファイル名を含める必要があります。私たちは、次の読むことができるGraph API 2.5 video referenceで
。
ぼんやりとして、2.6 video referenceには、そこに書かれたようなものはありません。
私の質問は以下のとおりです。
- が本当にGraphRequest.javaにバグがありますか?または、2.6ビデオ参照が正しいです、そして、ファイル名はもはや重要ではありませんか?
- バグがある場合、build.gradle依存関係を使用してAPIを使用しているときに、どのようにクラスを変更できますか?
- バグがない場合、アップロードスクリプトについて何が間違っていますか?Facebookがフォーマットエラー応答を送信しないようにするにはどうすればよいですか?
。