CognitoおよびCloudロジックを含むAWSモバイルハブプロジェクトを作成しました。私のAPIゲートウェイでは、承認者用のCognitoユーザープールを設定しました。 Reactネイティブをクライアント側アプリとして使用しています。APIリクエストにAuthorizationヘッダーを追加するにはどうすればよいですか?.
const request = {
body: {
attr: value
}
};
API.post(apiName, path, request)
.then(response => {
// Add your code here
console.log(response);
})
.catch(error => {
console.log(error);
});
};
デフォルトでは、aws-amplify
のAPIモジュールはsig4署名リクエストを試行します。オーソライザタイプがAWS_IAM
の場合、これは最適です。
これは明らかにCognitoユーザープール認証を使用するときに必要なではありません。この場合、sig4署名の代わりに、Authorization
ヘッダーでid_tokenを渡す必要があります。
今日、実際にAuthorization
ヘッダーを渡して増幅することができます これにより、sig4署名で上書きされなくなります 。
あなたの場合、headers
オブジェクトをrequest
オブジェクトに追加するだけです。例えば:
async function callApi() {
// You may have saved off the JWT somewhere when the user logged in.
// If not, get the token from aws-amplify:
const user = await Auth.currentAuthenticatedUser();
const token = user.signInUserSession.idToken.jwtToken;
const request = {
body: {
attr: "value"
},
headers: {
Authorization: token
}
};
var response = await API.post(apiName, path, request)
.catch(error => {
console.log(error);
});
document.getElementById('output-container').innerHTML = JSON.stringify(response);
}
aws-amplify
0.4.1を使用してテスト済み。