Parse で App Links を動作させるのに問題があります。
私のアプリはモバイル専用なので、Facebook のモバイル ホスティング API を使用したいと考えていました。Facebook アプリ シークレットをリクエストと共に送信する必要があるため、Parse Cloud Code を使用して行いたいと考えました。
Facebookのドキュメントで見つけたのは、cURLでそれを行う方法だけでした:
curl https://graph.facebook.com/app/app_link_hosts \
-F access_token="APP_ACCESS_TOKEN" \
-F name="iOS App Link Object Example" \
-F ios=' [
{
"url" : "sharesample://story/1234",
"app_store_id" : 12345,
"app_name" : "ShareSample",
}, ]' \
-F web=' {
"should_fallback" : false, }'
これは私がクラウドコードで思いついたものです
Parse.Cloud.httpRequest({
method: 'POST',
url: 'https://graph.facebook.com/app/app_link_hosts',
headers: {
'Content-Type': 'multipart/form-data'
},
body: {
access_token : "APP_ACCESS_TOKEN",
name : "iOS App Link Object Example",
ios : '[{"url" : "sharesample://story/1234","app_store_id" : 12345,"app_name" : "ShareSample",},]',
web : '{"should_fallback" : false,}'
}
私が得る応答は次のとおりです: 要求は応答コード 400 で失敗しました
multipart/form-data がParse.Cloud.httpRequestでサポートされていないことを読んだので、これを行う別の方法はありますか?
更新:マルチパートデータをバッファで送信できることがわかったので、これが私のコードです
var Buffer = require('buffer').Buffer;
var access_token = new Buffer('APP_ACCESS_TOKEN','utf8');
var name = new Buffer('iOS App Link Object Example','utf8');
var ios = new Buffer('[{"url" : "sharesample://story/1234","app_store_id" : 12345,"app_name" : "ShareSample",},]','utf8');
var web = new Buffer('{"should_fallback" : false,}','utf8');
var contentBuffer = Buffer.concat([access_token, name, ios, web]);
Parse.Cloud.httpRequest({
url: 'https://graph.facebook.com/app/app_link_hosts',
method: 'POST',
headers: {
'Content-Type': 'text/html; charset=utf-8'
},
body: contentBuffer
}
しかし、私はまだ同じ結果を得ています:(
update2: コンテンツ タイプ application/x-www-form-urlencoded と通常の本文で動作するようになりました。しかし、curlでテストして同じ応答を得たので、エラーはパラメーターのどこかにあったと思います