Swift3에서 Cognito의 인증되지 않은 사용자로 액세스하려고했습니다.
샘플 코드는 github에 올립니다.
htps : // 기주 b. 코 m / 미야스에 / 아 WS 코 g 토토 mp ぇ
하고 싶은 일
Swift3.0 환경에서 인증되지 않은 사용자로 등록하고 싶습니다.
환경
Cognito란?
모바일이나 네이티브 앱에 대해서, 사용자의 로그인 기능을 간단하게 구현할 수 있거나, 유저에게 연결되는 데이터를 저장, 꺼낼 수가 있습니다.
Cognito의 트위터 인증
귀찮은 Twitter 인증을 가볍게 할 수 있을 것 같은 이미지입니다만, 정말로 귀찮은 OAuth 인증 부분은 자전으로 준비하지 않으면 안 된다고 하는 함정이 있습니다. 어디까지나 OAuth 인증으로 얻은 Token과 TokenSecret을 사용하여 CognitoID와 연결할 수 있어요! 느낌입니다.
User Pools 및 Federated Identities
Cognito에 액세스하면 Manage your User Pools와 Manage Federated Identities라는 버튼이 나와서 당황스럽지만 각각 이런 기능입니다.
User Pools
독자적인 인증 프로바이더를 만드는 기능입니다. Twitter나 Facebook으로 인증하는 경우나 원래 미인증 유저로서 사용하고 싶은 경우 만질 필요는 없습니다.
Federated Identities(이번에는 사용하지 않음)
User Pools로 만든 독자적인 프로바이더나 Twitter 인증을 사용해 로그인 기능을 제공합니다.
Cognito 설정
Federated Identities
identity pool을 만듭니다.
만들기
설정
설정이 완료되면 Create Pool을 눌러 생성합니다.
역할 설정
위가 인증 사용자용 역할, 아래가 미승인 사용자용 역할입니다.
이번에는 사용자 등록이 목표이므로 기본적으로 만들겠지만 뭔가 AWS 서비스를 이용하는 경우 여기에 설정하면 좋을 것 같습니다.
앱 만들기
SDK 도입
SDK는 AWS 공식에도 떨어지고 있습니다만, 어쩐지 움직이지 않아 빠졌다. . .
Cocoapod에서 도입하겠습니다. 이번은 인증 밖에 없기 때문에 AWSCognito만 지정하면 OK입니다.
target 'AWSCognitoSample' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for AWSCognitoSample
pod 'AWSCognito'
end
브리지 헤더 추가
AWS의 SDK는 여전히 Objective-C 코드이므로 (비) Swift에서 사용하기 위해 브리지 헤더를 추가해야합니다.
새 파일 추가에서 CognitoUserpool-Bridging-Header.h라는 파일을 만들었습니다.
CognitoUserpool-Bridging-Header.h
#import <AWSCore/AWSCore.h>
#import <AWSCognito/AWSCognito.h>
XCode에 헤더 설정
Build Settings의 Objective-C Bridging Header에 이전 CognitoUserpool-Bridging-Header.h의 경로를 추가합니다.
Identity pool ID
AWS Console에서 Identity pool ID를 가져옵니다.
로그인 코드 작성
AppDelegate에 로그인 코드를 기재합니다.
AppDelegate.swift
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.APNortheast1, identityPoolId:"ap-northeast-1:********-****-****-****-************")
let configuration = AWSServiceConfiguration(region:.APNortheast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let defaultServiceConfiguration = AWSServiceConfiguration(region: AWSRegionType.APNortheast1, credentialsProvider: credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = defaultServiceConfiguration
credentialsProvider.getIdentityId()
※리전과 Identity pool ID는 자신의 환경에 맞게 다시 작성해 주세요.
움직여 보자
XCode에서 앱을 시작해 보면 ...
안전한 사용자로 추가되었습니다.
Reference
이 문제에 관하여(Swift3에서 Cognito의 인증되지 않은 사용자로 액세스하려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/foxtrackjp/items/1d15cbee4c9d60a397b3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Swift3에서 Cognito의 인증되지 않은 사용자로 액세스하려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/foxtrackjp/items/1d15cbee4c9d60a397b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)