Java 如何从google api响应中获取电子邮件id
我能够使用oath2从Google API响应中获取用户信息。但我不知道如何单独得到这些回答 我从谷歌Api得到的回应: * 但我只想在数据库表中单独保存“id”和“name”。我怎样才能做到这一点? 通过使用下面的代码,我得到了上面的响应/输出Java 如何从google api响应中获取电子邮件id,java,google-api,google-oauth,Java,Google Api,Google Oauth,我能够使用oath2从Google API响应中获取用户信息。但我不知道如何单独得到这些回答 我从谷歌Api得到的回应: * 但我只想在数据库表中单独保存“id”和“name”。我怎样才能做到这一点? 通过使用下面的代码,我得到了上面的响应/输出 public static void main(String[] args) throws IOException { -------------------------
public static void main(String[] args) throws IOException
{
-------------------------
-------------------------
-------------------------
String accessToken = authResponse.accessToken;
GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken, TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authResponse.refreshToken);
HttpRequestFactory rf = TRANSPORT.createRequestFactory(access);
System.out.println("Access token: " + authResponse.accessToken);
String url = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=" + authResponse.accessToken;
final StringBuffer r = new StringBuffer();
final URL u = new URL(url);
final URLConnection uc = u.openConnection();
final int end = 1000;
InputStreamReader isr = null;
BufferedReader br = null;
isr = new InputStreamReader(uc.getInputStream());
br = new BufferedReader(isr);
final int chk = 0;
while ((url = br.readLine()) != null)
{
if ((chk >= 0) && ((chk < end)))
{
r.append(url).append('\n');
}
}
System.out.print("");
System.out.println();
System.out.print(" "+ r ); //this is printing at once but i want them individually
access.refreshToken();
System.out.println("Original Token: " + accessToken + " New Token: " + access.getAccessToken());
}
publicstaticvoidmain(字符串[]args)引发IOException
{
-------------------------
-------------------------
-------------------------
字符串accessToken=authResponse.accessToken;
GoogleAccessProtectedResource access=新的GoogleAccessProtectedResource(accessToken、传输、JSON\u工厂、客户端\u ID、客户端\u机密、authResponse.refreshToken);
HttpRequestFactory rf=TRANSPORT.createRequestFactory(访问);
System.out.println(“访问令牌:+authResponse.accessToken”);
字符串url=”https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=“+authResponse.accessToken;
final StringBuffer r=新StringBuffer();
最终URL u=新URL(URL);
最终URLConnection uc=u.openConnection();
最终int端=1000;
InputStreamReader isr=null;
BufferedReader br=null;
isr=新的InputStreamReader(uc.getInputStream());
br=新的缓冲读取器(isr);
最终int chk=0;
而((url=br.readLine())!=null)
{
如果((chk>=0)和((chk
好吧,您可以在整个生成的JSON对象上使用类似JSON的库(围绕简单性设计;示例),也可以使用您自己的正则表达式代码。类似于以下内容的内容可能适用于后者:
//.... other existing code
String pat = "\"(.*)\": \"(.*)\"";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = null;
Map<String,String> map = new HashMap<String,String>();
while ((url = br.readLine()) != null) {
if ((chk >= 0) && ((chk < end))) {
matcher = pattern.matcher(url);
if(matcher.find()) {
map.put(matcher.group(1), matcher.group(2));
}
//r.append(url).append('\n');
}
}
System.out.println(map.get("id"));
//... rest of code
/。。。。其他现行守则
字符串pat=“\”(.*)\”:\“(.*)\”;
Pattern=Pattern.compile(pat);
Matcher-Matcher=null;
Map Map=newhashmap();
而((url=br.readLine())!=null){
如果((chk>=0)&((chk
库方法可能是过多的,但可能会处理数据类型转换等。也会处理非字符串数据类型与我的悲伤正则表达式。 2美分:您可能想考虑不在读取循环中重用URL变量。你节省了一点点内存,如果这是你的意图的话,但是代码的清晰度受到了影响。谢谢,我得到了身份证。但是你是如何知道这些事情的。我也想通过回答别人的问题来帮助他们,比如你是如何回答我的问题的。
//.... other existing code
String pat = "\"(.*)\": \"(.*)\"";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = null;
Map<String,String> map = new HashMap<String,String>();
while ((url = br.readLine()) != null) {
if ((chk >= 0) && ((chk < end))) {
matcher = pattern.matcher(url);
if(matcher.find()) {
map.put(matcher.group(1), matcher.group(2));
}
//r.append(url).append('\n');
}
}
System.out.println(map.get("id"));
//... rest of code