0

理想的には Facebook 経由で、Trigger.io からユーザーを認証しようとしています。

Facebook 経由で (Parse Facebook モジュールを使用して) ユーザーを認証し、アクセス トークン、アクセス有効期限、Facebook ID を Parse への呼び出しに渡します。

ここで問題が発生します。このデータを Ajax 経由で Parse REST API に投稿しようとすると、Forge/Trigger コンソールに次のエラーが表示されます。

{ type: 'EXPECTED_FAILURE', content: '{"code":107,"error":"このエンドポイントは Content-Type: application/json リクエストのみをサポートしており、application/x-www-form-urlencoded はサポートしていません。"}', statusCode: '400', メッセージ: 'サーバーから受信した HTTP エラー コード: 400' }

このデータを投稿しようとしたコードは...

function auth(facebookId,accessToken,expirationDate) {
    forge.logging.log('auth started');
    forge.request.ajax({
        url: 'https://api.parse.com/1/users',
        headers: {
            'X-Parse-Application-Id': config.parseAppId,
            'X-Parse-REST-API-Key': config.parseRestKey,
            'Content-Type': 'application/json'
        },
        type: 'POST',
        dataType: 'json',
        data: {
            "authData": {
                "facebook": {
                    "id" : facebookId,
                    "access_token": accessToken,
                    "expiration_date": expirationDate
                  }
            }
        },
        success: function (data) {
            forge.logging.log('auth finished 1');
            forge.logging.log(data);
        },
        error: function(error){
            forge.logging.log('auth finished 2');
            forge.logging.log(error);
        }
    })//success
} //auth

これを JSON オブジェクトとして/正しい形式で送信する方法がわかりません。誰かが何かアイデアを持っていれば、彼らは大歓迎です。ありがとう。ジョシュ。

4

1 に答える 1

3

data渡されたオプションがforge.requests.ajax例のようなオブジェクトである場合、実際に投稿されるのはオブジェクトを表すクエリ文字列です。このcontentTypeオプションでは、Content-Typeヘッダーを設定するだけで、オブジェクトがリクエストに対してどのようにエンコードされるかには影響しません。

ただし、dataオプションが単なる文字列の場合、この文字列がリクエストの本文として使用されます。JSON.parse次のように使用して、本文として使用する JSON 文字列を生成できます。

forge.request.ajax({
    ...
    contentType: 'application/json',
    data: JSON.stringify({
        "authData": {
            "facebook": {
                "id" : facebookId,
                "access_token": accessToken,
                "expiration_date": expirationDate
              }
        }
    })
});
于 2012-11-21T16:04:43.980 に答える