5

すべての認証を行うために、関数のラムダ グループをセットアップしました。アプリから 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つのエラーが発生します。

  1. .h ファイルで、「AWSCognitoCredentialsProviderHelper のインターフェイスが見つかりません」というメッセージが表示される
  2. .mファイルで、「identityIdは読み取り専用プロパティself.identityIdへの割り当てです」を取得します

CocoaPods を再インストールし、aws-ios-sdk を再インストールしました。古いファイルと派生データもすべて消去しました。

何か不足していますか?最終的な目標は、ユーザーが認証されているため、ゲートウェイとラムダを使用せずに、アプリから直接 dynamodb と s3 を呼び出すためのアクセス権を持つ認証済みユーザーを持つことができるようにすることです。ありがとう。

4

0 に答える 0