首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从JSON对象中检索值并使用google-plus:0.1插件进行身份验证

如何从JSON对象中检索值并使用google-plus:0.1插件进行身份验证
EN

Stack Overflow用户
提问于 2015-06-18 15:06:00
回答 2查看 124关注 0票数 0

我在一个Grails应用程序中使用google-plus:0.1插件来启用使用Google+的登录,我已经成功登录,并且我得到了JSON对象。

在插件内部有一段代码,他们把JSON字符串转换成JSON对象,然后返回给我。这是一个插件中的代码:

代码语言:javascript
复制
public Person getCurrentUserProfile() {
    Person person
    try {
        URL url = new URL("https://www.googleapis.com/plus/v1/people/me?access_token=${this.accessToken}")
        def jsonString = JSON.parse(url?.text)
        println "URL : " + url.toString()
        println "JSON : " + jsonString

        person = Person.parseJSONForPerson(jsonString)
    } catch (GooglePlusException e) {
        e.printStackTrace()
    }
    return person
}

从这里我得到JSON对象在控制台中打印的Json字符串是:

代码语言:javascript
复制
URL : https://www.googleapis.com/plus/v1/people/me?access_token=ya29.lgFPSagK5lQ8l19hWuxra8AxsXzZjxlbCetP-aWpUHbq2_djrdvj-3XMFMEgl9r4WfaiLvo7Q3RfJQ
JSON : [etag:"RqKWnRU4WW46-6W3rWhLR9iFZQM/eUT2aym4R39YBu_ra8ZlhztXJ6w", organizations:[[startDate:1995, title:Science, primary:false, name:St.Joseph's Convent, endDate:2008, type:school]], image:[isDefault:false, url:https://lh5.googleusercontent.com/-kuh1_bl_8is/AAAAAAAAAAI/AAAAAAAAADA/ZZfY8ob2QrQ/photo.jpg?sz=50], isPlusUser:true, emails:[[value:kartiki.sahu@crowdera.co, type:account]], kind:plus#person, url:https://plus.google.com/102332421579091283598, id:102332421579091283598, verified:false, name:[familyName:Sahu, givenName:Kartiki], domain:crowdera.co, circledByCount:9, gender:female, displayName:Kartiki Sahu, objectType:person]

我无法从我正在获取的对象获取电子邮件。

我尝试以person.name.familyName的形式获取familyName,我得到了它的值,但对于givenName,它显示为空,而对于电子邮件和组织,它显示为空列表,如[]。

我的代码:-

代码语言:javascript
复制
def code = request.getParameter("code")
    String accessToken = accessTokenService.generateAccessToken(code)
    googlePlusService.accessToken = accessToken
    def person = googlePlusService.getCurrentUserProfile()

请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2015-06-18 15:33:46

你可以像这样得到价值。

代码语言:javascript
复制
      String str="""{
 "kind": "plus#person",
 "etag": "\\"RqKWnRU4WW46-6W3rWhLR9iFZQM/eUT2aym4R39YBu_ra8ZlhztXJ6w\\"",
 "gender": "female",
 "emails": [
  {
   "value": "kartiki.sahu@crowdera.co",
   "type": "account"
  }
 ],
 "objectType": "person",
 "id": "102332421579091283598",
 "displayName": "Kartiki Sahu",
 "name": {
  "familyName": "Sahu",
  "givenName": "Kartiki"
 },
 "url": "https://plus.google.com/102332421579091283598",
 "image": {
  "url": "https://lh5.googleusercontent.com/-kuh1_bl_8is/AAAAAAAAAAI/AAAAAAAAADA/ZZfY8ob2QrQ/photo.jpg?sz=50",
  "isDefault": false
 },
 "organizations": [
  {
   "name": "St.Joseph's Convent",
   "title": "Science",
   "type": "school",
   "startDate": "1995",
   "endDate": "2008",
   "primary": false
  }
 ],
 "isPlusUser": true,
 "circledByCount": 9,
 "verified": false,
 "domain": "crowdera.co"
}
"""
        def jsonString  = new JsonSlurper().parseText(str)
        render jsonString.emails.value
    }

我得到了以下列表的输出。

代码语言:javascript
复制
['kartiki.sahu@crowdera.co']
票数 0
EN

Stack Overflow用户

发布于 2015-06-18 19:51:16

代码语言:javascript
复制
    def code = request.getParameter("code")
    String accessToken = accessTokenService.generateAccessToken(code)
    URL url = new URL("https://www.googleapis.com/plus/v1/people/me?                                                                                                                    
    access_token=${accessToken}")
    def jsonString = JSON.parse(url?.text)
    println "URL : " + url.toString()
    println "JSON : " + jsonString
    println "emails  "+jsonString.emails.value[0]
    println "name  "+jsonString.name.givenName + " " + 
    jsonString.name.familyName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30908619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档