为什么Android库中包含的某些类不公开?对我来说,这没有任何实际意义,基本上只是为最近发布的一些错误的小部件开发临时修复程序的障碍.
具体来说,我说的是TextInputLayout
在Android设计支持库.例如,如果我想创建一个自定义窗口小部件,它会覆盖构造函数中的某些代码,我不能这样做,因为CollapsingTextHelper
它不是公共类.我必须下载源代码并将相关的类复制到我的项目中,但实际上没有任何东西妨碍我这样做.那么首先不公开的重点是什么呢?
据我所知,随着时间的推移,库会得到更新和改进,您只需添加@Deprecated
注释即可指示特定类是旧的还是过时的,并且只是为了防止遗留代码中断.
我知道一个库只是简单地公开所有类是没有意义的,但是我不明白为什么对于实现一个小部件必不可少的类不应该公开.为什么他们不能只@Deprecated
在其中一个类被更好的版本替换时添加注释,或者什么时候以完全不同的方式实现小部件呢?
我正在尝试使用Google登录SDK在Google应用程序中将Google与Amazon Cognito集成,但我似乎无法弄清楚如何正确获取JWT ID令牌.我相信,所有内容都设置正确,因为Google Sign-In和Cognito都是独立工作的.
我正在设置这样的GIDSignIn.
[GIDSignIn sharedInstance].scopes = @[kGTLAuthScopePlusLogin, kGTLAuthScopeDrive];
[[GIDSignIn sharedInstance] setClientID:kClientID];
[GIDSignIn sharedInstance] setServerClientID:kServerClientId];
Run Code Online (Sandbox Code Playgroud)
然后拿到id_token,按规定这里唯一的例外是,我使用谷歌的登录和而非Google+登入,它没有GTMOAuth2Authentication.
- (void)googleSignedIn:(GIDGoogleUser *) user
{
NSLog(@"AWSManager: Google signed in, id token = %@", user.authentication.idToken);
NSString *idToken = user.authentication.idToken;
self.credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyGoogle): idToken};
Run Code Online (Sandbox Code Playgroud)
但是idtoken不是json格式的web令牌,它只是一大块字符.AWS抛出此错误 -
AWSiOSSDKv2 [Error] AWSIdentityProvider.m line:185
| __51-[AWSAbstractCognitoIdentityProvider getIdentityId]_block_invoke169
| GetId failed.
Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=9
"The operation couldn’t be completed. (com.amazonaws.AWSCognitoIdentityErrorDomain error 9.)"
UserInfo=0x8fa5eb8e4e40{__type=NotAuthorizedException, message=Token is not from a supported provider of this identity pool.}]
Run Code Online (Sandbox Code Playgroud)
我不知道我该怎么做.我对objective-c很新,并且之前在Android上完成了所有这些工作.在android上我做了: …