Appengine 柔性环境是否支持 AbstractAppEngineAuthorizationCodeServlet?

Is AbstractAppEngineAuthorizationCodeServlet supported on Appengine Flexible Environment?

我想知道 AppEngine 柔性环境是否支持来自 com.google.api-客户端的 AbstractAppEngineAuthorizationCodeCallbackServlet。

我正在努力从已弃用的环境 (vm:true) 迁移到最新版本的灵活环境 (env:flex)。

当访问我的一个从 AbstractAppEngineAuthorizationCodeServlet 扩展的 servlet 时,流程完美运行并且重定向完成到其他 servlet,它从 AbstractAppEngineAuthorizationCodeCallbackServlet 扩展。现在,当它尝试 运行:

TokenResponse response = flow.newTokenRequest(code).setRedirectUri(redirectUri).execute();

(来自 AbstractAuthorizationCodeCallbackServlet 的 doGet 内的行 class)

它返回一个:

com.google.apphosting.api.ApiProxy$CallNotFoundException: Can't make API call urlfetch.Fetch in a thread that is neither the original request thread nor a thread created by ThreadManager

更新

我可以在 Cloud Console 上检查我的实例确实 运行ning on Flexible。

我刚刚发现 lib 使用有什么问题

在创建 GoogleAuthorizationCodeFlow 对象时,我传递了一个 GoogleClientSecrets:

Builder(HttpTransport transport, JsonFactory jsonFactory, GoogleClientSecrets clientSecrets, Collection<String> scopes)

出于某种原因,将 id 和 secret 作为字符串传递(使用 Builder 的其他构造函数),它有效。

GoogleAuthorizationCodeFlow.Builder(HttpTransport, JsonFactory, String, String, Collection<String> scopes)

虽然不确定原因。

------------------------------------编辑------ --------------------------

我刚刚在这里看到,除了不使用 GoogleClientSecrets 对象之外,我还做了另一个更改。

private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final UrlFetchTransport HTTP_TRANSPORT = new UrlFetchTransport();

使用 UrlFetchTransport 而不是 NetHttpTransport 是显示堆栈跟踪的真正原因。