Eclipse-Cannot 实例化类型 JsonFactory

Eclipse-Cannot instantiate the type JsonFactory

提问人:Belle 提问时间:7/23/2022 最后编辑:Belle 更新时间:7/24/2022 访问量:210

问:

我正在从事一个项目,需要用谷歌登录。我使用 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");
    }
}
}
json servlets google-signin 服务器端

评论


答:

1赞 Forketyfork 7/24/2022 #1

JsonFactory 是一个抽象类。Java 中的抽象类无法实例化。你需要实例化一些具体的类来扩展它。

另外,通过变量名称,我假设您想使用此工厂的 Jackson 实现。它在文档中标记为已弃用,建议改用 GsonFactory 实现。jacksonFactory

import com.google.api.client.json.gson.GsonFactory;

...

JsonFactory gsonFactory = new GsonFactory();