gpt4 book ai didi

java - OAuth2 Java - 如何设置 Accept header

转载 作者:行者123 更新时间:2023-12-02 06:15:42 27 4
gpt4 key购买 nike

我正在尝试使用混合解决方案为我的网站实现“使用 Github 登录”功能 - 网站的 javascript 执行初始登录/凭据,重定向 url 用于继续访问 token 请求的 tomcat servlet。

我正在使用适用于 Java 的 Google API oauth2 库。

我的代码目前如下所示:

AuthorizationCodeTokenRequest tokenRequest =
new AuthorizationCodeTokenRequest(
new NetHttpTransport(),
new JacksonFactory(),
new GenericUrl("https://github.com/login/oauth/access_token"),
code)
.setClientAuthentication(
new ClientParametersAuthentication(
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET));

TokenResponse tokenResponse = tokenRequest.execute();

这不起作用,我收到以下异常:

com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'access_token': was expecting ('true', 'false' or 'null')

我调查了一下,发现来自 Github 的响应不是 json 格式(JacksonFactory 期望的),但实际上看起来像这样:

access_token=xxxxxxxxxxx&scope=user%3Aemail&token_type=bearer

我在https://developer.github.com/v3/media/#request-specific-version中找到了我需要将请求的 Accept http header 设置为 application/vnd.github.v3+json 才能返回 json 格式的内容。

如何使用 Google 的 oauth2 api 执行此操作?

编辑:基于tinker的回应,我通过添加以下内容解决了:

tokenRequest.setRequestInitializer(new HttpRequestInitializer()
{
@Override
public void initialize(HttpRequest request) throws IOException
{
request.getHeaders().setAccept("application/json");
}
});

最佳答案

您必须创建一个 HttpRequest 并向其中添加 header 。看javadoc用于在此处设置请求 header 。

AuthorizationCodeTokenRequest 中,您可以使用 getRequestInitializer() 获取 HttpRequestInitializer。如果为 null,则您可以创建一个初始化程序并对新创建的对象使用 setRequestInitializer()

使用初始化程序,您现在可以初始化具有所需 header 的请求。

我还没有测试过这个,所以我不太确定,但是来自 docs这看起来是唯一的方法。

关于java - OAuth2 Java - 如何设置 Accept header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com