gpt4 book ai didi

java - Android 应用的 Google 访问 token 服务器端验证

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:07 29 4
gpt4 key购买 nike

我正在开发基于与服务器通信的 android 应用程序,我想使用 Google(g+) 身份验证机制。

基本上,我认为它应该像这样工作:

  1. 在我的 android 应用程序中,用户使用他的电子邮件和密码登录 Google。
  2. 用户允许访问其相关 Google 应用程序的数据。
  3. 我的 android 应用程序在成功登录后收到访问 token 。
  4. 在与我的服务器进一步通信时,我的 Android 应用程序应该使用接收到的 Google 访问 token (例如:在查询中)。
  5. 当我的服务器收到来自 Android 应用的一些带有访问 token 的查询时,它应该向 Google 询问此 token 是否有效(以及对谁有效),如果是,服务器应该假定用户已通过 Google 的身份验证。

我的问题是:服务器应该如何询问 Google 给定的访问 token 是否有效?我想我应该以某种方式检查 token 是否对我的 Android 应用程序有效。

我已尝试对 Google API 进行许多 Google 查询,但我发现没有任何结果如我所料。你能给我举个例子吗?

最佳答案

您可以验证 access_token 是否有效。

您需要向 api 端点发送 GET 请求:https://www.googleapis.com/oauth2/v1/tokeninfo 并在请求中包含您的 access_token。

你可以这样试试:

 String connection = new ConnectionService().connectionGoogle("https://www.googleapis.com/oauth2/v1/tokeninfo", "access_token=" + "YOUR_EXISTING_ACCESS_TOKEN");
System.out.println(connection);

上面代码中使用的方法是:

public static String connectionGoogle(String url, String parameter) throws MalformedURLException, ProtocolException, IOException {

URL url1 = new URL(url);
HttpURLConnection request1 = (HttpURLConnection) url1.openConnection();
request1.setRequestMethod("GET");
request1.setDoOutput(true);
request1.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter wr = new OutputStreamWriter(request1.getOutputStream());
wr.write(parameter);
wr.flush();
request1.connect();
String responseBody = convertStreamToString(request1.getInputStream());
wr.close();
return responseBody;
}

private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (IOException e) {
} finally {
try {
is.close();
} catch (IOException e) {
}
}

return sb.toString();
}

关于java - Android 应用的 Google 访问 token 服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477969/

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