2017-04-04 60 views
1

我一直在使用Google+ API玩耍,並試圖讓這個網址是Google+用戶的個人資料圖片網址:

https://www.googleapis.com/plus/v1/people/ {} USER_ID鍵= { API_KEY}

無需OAuth的,你也可以嘗試一下這裏(無需API密鑰):

https://developers.google.com/apis-explorer/#p/plus/v1/plus.people.get?userId=116725099929439898086&_h=1&

起初我使用的提取API來獲取數據,因爲我也想用一個服務人員要做到這一點:

fetch('https://www.googleapis.com/plus/v1/people/116725099929439898086?key=MY_API_KEY') 
.then(function(response){ 
    console.log(response); 
}); 

但它只是給了我這樣的響應:

{ 
    body: ReadableStream 
    bodyUsed: false 
    headers: Headers 
    ok: true 
    status: 200 
    statusText: "" 
    type: "cors" 
    url: "https://www.googleapis.com/plus/v1/people/115681458968227650592?key=MY_API_KEY" 
} 

不過,如果我使用jQuery的的getJSON方法改爲:

$.getJSON("https://www.googleapis.com/plus/v1/people/115681458968227650592?key=MY_API_KEY", function(data) { 
    console.log(data); 
}); 

它的工作原理就像一個魅力和我能得到我所需要的:

{ 
"kind": "plus#person", 
"etag": "\"FT7X6cYw9BSnPtIywEFNNGVVdio/DgskSQn7XXHCvjcdFBFkiqEbsfo\"", 
"gender": "male", 
"urls": [ ... ], 
"objectType": "person", 
"id": "116725099929439898086", 
"displayName": "Kevin Lai", 
... 
} 

有人能解釋爲什麼他們會這樣不同的行爲?另外,如何在仍使用Fetch API的情況下解決問題,以便我仍然可以在服務人員中執行此異步任務?

+0

很可能google會以json格式向您發送回覆。 –

回答

1

更改fetch()調用以使用response.json()(請參閱MDN docs)從響應主體中提取JSON。

fetch('https://www.googleapis.com/plus/v1/people/116725099929439898086?key=MY_API_KEY') 
.then(function (response){ 
    return response.json(); 
}) 
.then(function (json){ 
    console.log(json); 
}); 
+0

看起來像你的解決方案的作品!我只是編輯了一下,使輸出一致。但是,我們怎麼知道我們得到的是一個json? @GregL – kevguy

+0

你應該知道你期望從你打電話給的API。使用'.getJSON()',你總是假設JSON,所以兩種方法之間返回類型的假設沒有什麼區別。 – GregL

+0

謝謝,很好的答案! – kevguy