すべての認証を行うために、関数のラムダ グループをセットアップしました。アプリから API ゲートウェイ経由で接続し、最後に GetOpenIdTokenForDeveloperIdentity() を呼び出します。これにより、ゲートウェイを介してデバイスに identityId とトークンが返されます。
次に、このサイトの指示に従います (Objective-C 用): http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
私はidentityIdとトークンを持っているので、これから始めました:
DeveloperProvider.h
#import <AWSCore/AWSCore.h>
@interface DeveloperProvider : AWSCognitoCredentialsProviderHelper
@end
DeveloperProvider.m
@implementation DeveloperProvider
/*
* Use the token method to communicate with your backend to get an
* identityId and token.
*/
// Below gave me an error and changed to: - (AWSTask <NSString *> *) token
- (AWSTask <NSString*>) token
{
//Write code to call your backend:
//Pass username/password to backend or some sort of token to authenticate user
//If successful, from backend call getOpenIdTokenForDeveloperIdentity with logins map
//containing "your.provider.name":"enduser.username"
//Return the identity id and token to client
//You can use AWSTaskCompletionSource to do this asynchronously
// Added this in to the code
NSString *identityId = @"IdentityIdFromGateway";
NSString *token = @"TokenGotFromGatewayToo";
// Changed below code from this:
// Set the identity id and return the token
// self.identityId = response.identityId;
// return [AWSTask taskWithResult:response.token];
// to this:
self.identityId = identityId;
return [AWSTask taskWithResult:token];
}
@end
上記から2つのエラーが発生します。
- .h ファイルで、「AWSCognitoCredentialsProviderHelper のインターフェイスが見つかりません」というメッセージが表示される
- .mファイルで、「identityIdは読み取り専用プロパティself.identityIdへの割り当てです」を取得します
CocoaPods を再インストールし、aws-ios-sdk を再インストールしました。古いファイルと派生データもすべて消去しました。
何か不足していますか?最終的な目標は、ユーザーが認証されているため、ゲートウェイとラムダを使用せずに、アプリから直接 dynamodb と s3 を呼び出すためのアクセス権を持つ認証済みユーザーを持つことができるようにすることです。ありがとう。