gpt4 book ai didi

java - android: google APi OAuth 2.0 - 获取用户信息时出现错误 400

转载 作者:行者123 更新时间:2023-12-01 15:20:29 25 4
gpt4 key购买 nike

我在 Web servlet 上有以下内容:

编辑:

public String tryGoogleAuthentication(String auth_token){

HttpURLConnection connection = null;
try {

//connection = (HttpURLConnection) new URL(("https://www.googleapis.com/oauth2v1/tokeninfo?access_token={"+auth_token+"}")).openConnection();
connection = (HttpURLConnection) new URL(("https://www.googleapis.com/oauth2/v1/user info")).openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer {"+auth_token+"}");
connection.setRequestProperty("Host", "googleapis.com");

//read response
String response = fromInputStreamToString(connection.getInputStream());
System.out.println(response);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return CONST.STATUS_OK;
}

在安卓中:

    private void googleAuthenticate(){
try {
mOAauthHelper = new OAuthHelper("something.net", "xxxxxxxxxx",
"https://www.googleapis.com/auth/userinfo.profile", "alex://myScheme");
String uri = mOAauthHelper.getRequestToken();

startActivity(new Intent("android.intent.action.VIEW", Uri.parse(uri)));

//Intent i = new Intent(this, GoogleOAUTHActivity.class);
//i.putExtra(GoogleOAUTHActivity.GOOGLE_OAUTH_ENDPOINT_KEY, uri);
//startActivity(i);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
failedAuthenticatingAtGoogle();
} catch (OAuthMessageSignerException e) {
e.printStackTrace();
failedAuthenticatingAtGoogle();
} catch (OAuthNotAuthorizedException e) {
e.printStackTrace();
failedAuthenticatingAtGoogle();
} catch (OAuthExpectationFailedException e) {
e.printStackTrace();
failedAuthenticatingAtGoogle();
} catch (OAuthCommunicationException e) {
e.printStackTrace();
failedAuthenticatingAtGoogle();
}
}

@Override
protected void onNewIntent(Intent intent) {
//super.onNewIntent(intent);

Uri uri = intent.getData();
String oauthToken = uri.getQueryParameter("oauth_token");
String oauthVerifier = uri.getQueryParameter("oauth_verifier");

if(oauthToken != null){
authorizeGoogleSessionToServer(oauthToken);
}
}

此后,我将请求 token 发送到我的 servlet,我尝试在其中获取用户配置文件,但没有成功。

您能告诉我出了什么问题以及为什么我从 Google 收到错误 400 吗?

谢谢。

最佳答案

不幸的是,我已经发现了一些问题

  1. should never have URL 中甚至 Bearer header 中的大括号正如草案中所述。

connection = (HttpURLConnection) new URL(("https://www.googleapis.com/oauth2/v1/userinfo?access_token={"+auth_token+"}")).openConnection()

  • 400 表示您在请求中缺少某些内容,在与特定错误节点相同的响应中可能有更多有关它的信息。

  • 最后,请注意,oauth_verifier 参数来自 OAuth 1。

  • 我建议您使用 Google OAuth2 playground 测试您的请求 URL。

    祝你好运!

    关于java - android: google APi OAuth 2.0 - 获取用户信息时出现错误 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10995825/

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