Yardımlarınız için şimdiden teşekkür ederiz!iOS ile Amazon Cognito: Kimlik Yasasına Erişim
Verileri düzgün şekilde saklamak/eşzamanlamak için Amazon Cognito'yu alıp almama konusunda bazı sorun yaşıyorum.
AWSCredentialsProvider.m line:429 | __73-[AWSCognitoCredentialsProvider
getCredentialsWithCognito:authenticated:]_block_invoke | GetCredentialsForIdentity
failed. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain
Code=10 "(null)" UserInfo={__type=NotAuthorizedException, message=Access to
Identity '*****' is forbidden.}]
cognitoID sıfır değildir: (Contigo'dan veri depolamak değildir) dataset.synchronize() İnternet üzerinden
I (İD üzerinden rol ile birlikte) gibi büyük bir çıkış hatası eldeif (FBSDKAccessToken.currentAccessToken() != nil)
{
let fbCognitoToken = FBSDKAccessToken.currentAccessToken().tokenString
credentialsProvider.logins = [AWSCognitoLoginProviderKey.Facebook.rawValue: fbCognitoToken]
// Retrieve your Amazon Cognito ID
credentialsProvider.getIdentityId().continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
print("Error: " + task.error!.localizedDescription)
}
else {
// the task result will contain the identity id
let cognitoId = task.result
//checking if cognito was successful, if true, sets success condition to true to prepare for segue into app
if cognitoId != nil{
print (cognitoId)
cognitoSuccess = true
let syncClient = AWSCognito.defaultCognito()
let dataset = syncClient.openOrCreateDataset("User_Data")
dataset.setString("[email protected]", forKey:"Email")
// credentialsProvider.refresh()
dataset.synchronize()
} }return nil}}
ben Yüz verileri okuyabilir: ve düzgün döner (ve çevrimiçi okuyabilir değerlerini eşleşir) Facebook ile kimlik doğrulaması sonra örneğin
, aşağıdaki gerçekleştirmek doğru şekilde kitap ve tüm kimlik doğrulaması, söyleyebileceğimden doğru bir şekilde oluştu. Burada kökünde basit bir şey olduğunu sanıyorum, ama birkaç gün geçirdikten sonra, bunu anlayamıyorum! AWS portalındaki IAM denetleyicisini kullanmak, Cognito işlevleri için tüm "yeşil çekleri" döndürür; bu nedenle, bunun sunucu tarafında da bir izin sorunu olmadığını biliyorum.
Sahip olabileceğiniz herhangi bir içgörü için tekrar teşekkürler!
Düzenleme: Yukarıdaki kod yığın önce ben çağırır: ishal
let credentialsProvider = self.initializeCognito()
(kimlik havuzu kimliği dışarı yıldız işaretli): Eğer olduğunuzda
func initializeCognito() -> AWSCognitoCredentialsProvider
{
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: AWSRegionType.USEast1, identityPoolId: "******")
let defaultServiceConfiguration = AWSServiceConfiguration(
region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = defaultServiceConfiguration
return credentialsProvider
}
Yanıt için teşekkürler! Yukarıdaki 4. kod satırında, Facebook belirtecini dolandırıcılık bilgisi sağlayıcısına iletiyorum - bu yeterli değil mi? Eğer sorabilirsem, ne yazmalıyım? Teşekkürler! – kmypwn
Bu biraz değişir. Giriş yapmayı denedikten hemen sonra başarısız mı oluyor? Yoksa uygulamayı kapatıp biraz beklemiyor musunuz? Eskiyse, senkronizasyon istemcisini bu kimlik bilgileri sağlayıcısıyla mı başlatıyorsunuz? –
Facebook'a giriş yaptıktan (bu başarılı), bu kod hemen çağrılır. cognitoID, "doğru" ifadesini döndürür; yani, ben nil olmamaya ya da saçma sapan bir şey olmadığına emin olmak için yazdırdığımda (cognitoID), benzersiz bir tanımlayıcı (AWS Cognito Identity Browser'ı bulabildiğim kadarıyla) doğru şekilde yazdırılır. CredentialsProvider'ı yorumlamıştım.refresh() satırı, ancak bunu koymak, sadece .synchronise() satırı için sağlanan bir başka hataya benzer başka bir hata döndürür. Yani kısacası, hayır, kapanış/tekrar açma yok! – kmypwn