我正在开发基于与服务器通信的Android应用程序,我想使用Google(g +)身份验证机制。
基本上,我认为它应该是这样的:
我的问题是:如果给定的访问令牌有效,服务器应该如何询问Google?我想我应该以某种方式检查令牌是否对我的Android应用程序有效。
我已经尝试了许多针对Google API的Google查询,但我发现没有任何效果。你能举个例子吗?
答案 0 :(得分:1)
您可以验证access_token
是否有效。
您需要将GET
请求发送到api终点: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();
}
答案 1 :(得分:0)
您可以使用tokeninfo端点检查令牌(访问或ID令牌)。如果您只想使用API,可以使用TokenInfo API from the API Explorer。
您可以使用Google提供的OAuth v2库来执行API调用。
中的说明形成网址并执行GET查询