【发布时间】:2018-06-28 03:40:58
【问题描述】:
我是 AWS Cognito 的新手。
从我的程序中,我想获取 AWS 临时凭证以从 API 网关访问 API 服务,例如 api。我拥有的是“IdentityPoolId”、“IdentityId”和“OpenIdToken”。
当我尝试通过 getCredentialsForIdentity 使用 AWS 凭证进行访问时,我每次都在 onError 方法中得到“Identity 'ap-northeast-1:xxxx' not found.”。请帮我看看我做错了什么?
Single<GetCredentialsForIdentityResult> primeSingle = Single.fromCallable(MyClass::getResult);
primeSingle
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<GetCredentialsForIdentityResult>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onSuccess(@NonNull GetCredentialsForIdentityResult result) {
Credentials credentials = result.getCredentials();
}
@Override
public void onError(@NonNull Throwable e) {
Log.d("Test", "onError: " + e.getMessage());
}
});
这里是获取凭据结果代码。
private static GetCredentialsForIdentityResult getResult() {
AmazonCognitoIdentity identityClient = new AmazonCognitoIdentityClient(new AnonymousAWSCredentials());
Map<String, String> logins = new HashMap<String, String>();
logins.put("cognito-identity.amazonaws.com", MyClass.OPEN_ID_TOKEN);
GetCredentialsForIdentityRequest getCredentialsForIdentityRequest =
new GetCredentialsForIdentityRequest()
.withIdentityId(MyClass.IDENTITY_ID) // Not Identity Pool Id
.withLogins(logins);
getCredentialsForIdentityRequest.setIdentityId(identityId);
GetCredentialsForIdentityResult result = identityClient.getCredentialsForIdentity(getCredentialsForIdentityRequest);
return result;
}
【问题讨论】:
标签: android amazon-web-services aws-cognito