提问人:Belle 提问时间:7/23/2022 最后编辑:Belle 更新时间:7/24/2022 访问量:210
Eclipse-Cannot 实例化类型 JsonFactory
Eclipse-Cannot instantiate the type JsonFactory
问:
我正在从事一个项目,需要用谷歌登录。我使用 servlet 对用户进行身份验证。在我的 servlet 中,我收到错误 无法实例化 JsonFactory 类型。
这是我的代码:
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
public class IdTokenVerifierAndParser {
private static final String GOOGLE_CLIENT_ID = "_id_";
public static GoogleIdToken.Payload getPayload (String tokenString) throws Exception {
JsonFactory jacksonFactory = new JsonFactory();
GoogleIdTokenVerifier googleIdTokenVerifier = new GoogleIdTokenVerifier(new NetHttpTransport(), jacksonFactory);
GoogleIdToken token = GoogleIdToken.parse(jacksonFactory, tokenString);
if (googleIdTokenVerifier.verify(token)) {
GoogleIdToken.Payload payload = token.getPayload();
if (!GOOGLE_CLIENT_ID.equals(payload.getAudience())) {
throw new IllegalArgumentException("Audience mismatch");
} else if (!GOOGLE_CLIENT_ID.equals(payload.getAuthorizedParty())) {
throw new IllegalArgumentException("Client ID mismatch");
}
return payload;
} else {
throw new IllegalArgumentException("id token cannot be verified");
}
}
}
答:
1赞
Forketyfork
7/24/2022
#1
JsonFactory
是一个抽象类。Java 中的抽象类无法实例化。你需要实例化一些具体的类来扩展它。
另外,通过变量名称,我假设您想使用此工厂的 Jackson 实现。它在文档中标记为已弃用,建议改用 GsonFactory
实现。jacksonFactory
import com.google.api.client.json.gson.GsonFactory;
...
JsonFactory gsonFactory = new GsonFactory();
评论