2017-08-24 19 views
0

フェデレーションIDを使用してAWS IoTの認証済みユーザを使用してパブリッシュおよびサブスクライブしようとしていました。私が間違いを続けるまではCognitoCachingCredentialsProvider: Failure to get credentials資格プロバイダ認可されていない例外AWS Android SDK

私はhereを探しました。しかし、彼らが提供したスニペットはもはやFacebookでは使われていない。この問題を解決するにはどうすればよいですか?

のAndroidコード:

public void IntializeAwsIot() { 
    clientId = "us-east-1:fcbd66e0-***************"; 

    // Initialize the AWS Cognito credentials provider 
    credentialsProvider = new CognitoCachingCredentialsProvider(
      getApplicationContext(), // context 
      AWSConfiguration.AMAZON_COGNITO_IDENTITY_POOL_ID,// Identity Pool ID 
      AWSConfiguration.AMAZON_COGNITO_REGION // Region 
    ); 

    Region region = Region.getRegion(AWSConfiguration.AMAZON_COGNITO_REGION); 
    // MQTT Client 
    mqttManager = new AWSIotMqttManager(clientId, CUSTOMER_SPECIFIC_ENDPOINT); 


    // The following block uses IAM user credentials for authentication with AWS IoT. 
    //awsCredentials = new BasicAWSCredentials("ACCESS_KEY_CHANGE_ME", "SECRET_KEY_CHANGE_ME"); 
    //btnConnect.setEnabled(true); 

    // The following block uses a Cognito credentials provider for authentication with AWS IoT. 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      awsCredentials = credentialsProvider.getCredentials(); 
      Connect(); 
     } 
    }).start(); 
} 

エラー:問題がCognitoキャッシュには資格がありませんでした

/com.amazon.mysampleapp E/CognitoCachingCredentialsProvider: Failure to get credentials 

com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Access to Identity 'us-east-1:fcbd66e0-**************' is forbidden. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 0fa5100d-88a0-11e7-af8c-854a7b8add4d) 
                          at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:729) 
                          at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:405) 
                          at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212) 
                          at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.invoke(AmazonCognitoIdentityClient.java:558) 
                          at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.getCredentialsForIdentity(AmazonCognitoIdentityClient.java:388) 
                          at com.amazonaws.auth.CognitoCredentialsProvider.populateCredentialsWithCognito(CognitoCredentialsProvider.java:691) 
                          at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:617) 
                          at com.amazonaws.auth.CognitoCredentialsProvider.getCredentials(CognitoCredentialsProvider.java:388) 
                          at com.amazonaws.auth.CognitoCachingCredentialsProvider.getCredentials(CognitoCachingCredentialsProvider.java:442) 
                          at com.mysampleapp.AWSIoT.PubSub$1.run(PubSub.java:69) 
                          at java.lang.Thread.run(Thread.java:818) 

答えて

0

ました。したがって、適切な資格情報を保存して、資格情報取得機能が働くようにする必要があります。

次のように追加する必要があります。

Map<String, String> logins = new HashMap<String, String>(); 
    logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); 
    credentialsProvider.setLogins(logins); 
関連する問題