0

我正在用AWS Cognito和Polly构建Android应用程序。该应用一直运行良好,直到今天它开始在auth.SignerFactory.createSigner函数中加入IllegalArgumentExceptionAndroid SDK SignerFactory抛出异常

我有以下代码:

mCredentialsProvider = new CognitoCachingCredentialsProvider(
      appContext, 
      COGNITO_POOL_ID, 
      Regions.US_EAST_1); 
    Map<String, String> logins = new HashMap<>(); 
    logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); 
    mCredentialsProvider.setLogins(logins); 
    //setup amazon polly 
    mPollyClient = new AmazonPollyPresigningClient(mCredentialsProvider); 

而引发的异常:

Caused by: java.lang.IllegalArgumentException 
at com.amazonaws.auth.SignerFactory.createSigner(SignerFactory.java:115) 
at com.amazonaws.auth.SignerFactory.lookupAndCreateSigner(SignerFactory.java:104) 
at com.amazonaws.auth.SignerFactory.getSigner(SignerFactory.java:79) 
at com.amazonaws.AmazonWebServiceClient.computeSignerByServiceRegion(AmazonWebServiceClient.java:379) 
at com.amazonaws.AmazonWebServiceClient.computeSignerByURI(AmazonWebServiceClient.java:351) 
at com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:215) 
at com.amazonaws.services.polly.AmazonPollyClient.init(AmazonPollyClient.java:281) 
at com.amazonaws.services.polly.AmazonPollyClient.<init>(AmazonPollyClient.java:261) 
at com.amazonaws.services.polly.AmazonPollyPresigningClient.<init>(AmazonPollyPresigningClient.java:128) 
at com.amazonaws.services.polly.AmazonPollyPresigningClient.<init>(AmazonPollyPresigningClient.java:107) 
at com.amazonaws.services.polly.AmazonPollyPresigningClient.<init>(AmazonPollyPresigningClient.java:76) 
at com.example.mymirrorlinkapplication.MainActivity.initializeLex(MainActivity.java:552) 
at com.example.mymirrorlinkapplication.MainActivity.checkFacebookLogin(MainActivity.java:298) 
at com.example.mymirrorlinkapplication.MainActivity.checkPermissions(MainActivity.java:289) 

我试图改变从CognitoCachingCredentialsProviderCognitoCredentialsProvider,但结果是一样的。造成这个问题的原因是什么?

回答

0

看起来像您从Access Token对象中提取Facebook Access Token值的代码可能不正确。至少基于Facebook文档。 https://developers.facebook.com/docs/facebook-login/access-tokens#usertokens

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    accessToken = AccessToken.getCurrentAccessToken(); 
} 

我假设AccessToken已经被实例化和填充。您可能需要更新代码,将令牌插入登录映射到此:

logins.put("graph.facebook.com",AccessToken.getCurrentAccessToken());