是否可以通過Google API從用戶個人資料中獲取信息?如果可能,我應該使用哪個API?通過Google API獲取用戶信息
我在這樣的信息有趣:
- 地址到用戶簡檔(例如https://profiles.google.com/115063121183536852887);
- 性別(sex);
- 個人資料照片。
此外它會很酷,從用戶的個人資料中獲取其他信息。
是否可以通過Google API從用戶個人資料中獲取信息?如果可能,我應該使用哪個API?通過Google API獲取用戶信息
我在這樣的信息有趣:
此外它會很酷,從用戶的個人資料中獲取其他信息。
一下添加到範圍 - https://www.googleapis.com/auth/userinfo.profile
和授權完成後,得到的信息 - https://www.googleapis.com/oauth2/v1/userinfo?alt=json
它的東西負載 - 包括姓名,公開檔案URL地址,性別,照片等
範圍 - https://www.googleapis.com/auth/userinfo.profile
return youraccess_token = access_token
得到https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=youraccess_token
你會得到JSON:
{
"id": "xx",
"name": "xx",
"given_name": "xx",
"family_name": "xx",
"link": "xx",
"picture": "xx",
"gender": "xx",
"locale": "xx"
}
要塔希爾·亞辛:
這是一個PHP的例子。
您可以使用json_decode函數來獲取userInfo數組。
$q = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxx';
$json = file_get_contents($q);
$userInfoArray = json_decode($json,true);
$googleEmail = $userInfoArray['email'];
$googleFirstName = $userInfoArray['given_name'];
$googleLastName = $userInfoArray['family_name'];
如何獲取有關用戶的更多信息? –
如何使用他們的迴應? –
它只給出編號 –
此範圍https://www.googleapis.com/auth/userinfo.profile現在已被棄用。請看https://developers.google.com/+/api/auth-migration#timetable。
您將使用獲得資料信息的新範圍是:配置文件或https://www.googleapis.com/auth/plus.login
和端點 - https://www.googleapis.com/plus/v1/people/ {} userId的 - 用戶id可以只是「我」爲當前登錄的用戶。
這是一個對整合未來證明信息的重要平安。更多關於已棄用範圍的信息https://developers.google.com/+/web/api/rest/oauth –
我正在使用Google API for .Net,但毫無疑問,您可以使用其他版本的API以相同方式獲取此信息。 由於user872858提到,範圍userinfo.profile已被棄用(google article)。
要獲取用戶的個人資料信息,我使用下面的代碼(重新編寫部分來自google's example):
IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(
new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = Secrets,
Scopes = new[] { PlusService.Scope.PlusLogin,"https://www.googleapis.com/auth/plus.profile.emails.read" }
});
TokenResponse _token = flow.ExchangeCodeForTokenAsync("", code, "postmessage",
CancellationToken.None).Result;
// Create an authorization state from the returned token.
context.Session["authState"] = _token;
// Get tokeninfo for the access token if you want to verify.
Oauth2Service service = new Oauth2Service(
new Google.Apis.Services.BaseClientService.Initializer());
Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
request.AccessToken = _token.AccessToken;
Tokeninfo info = request.Execute();
if (info.VerifiedEmail.HasValue && info.VerifiedEmail.Value)
{
flow = new GoogleAuthorizationCodeFlow(
new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = Secrets,
Scopes = new[] { PlusService.Scope.PlusLogin }
});
UserCredential credential = new UserCredential(flow,
"me", _token);
_token = credential.Token;
_ps = new PlusService(
new Google.Apis.Services.BaseClientService.Initializer()
{
ApplicationName = "Your app name",
HttpClientInitializer = credential
});
Person userProfile = _ps.People.Get("me").Execute();
}
比,你幾乎可以訪問使用USERPROFILE東西。
更新:要使此代碼正常工作,您必須在Google登錄按鈕上使用適當的作用域。例如我的按鈕:
<button class="g-signin"
data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read"
data-clientid="646361778467-nb2uipj05c4adlk0vo66k96bv8inqles.apps.googleusercontent.com"
data-accesstype="offline"
data-redirecturi="postmessage"
data-theme="dark"
data-callback="onSignInCallback"
data-cookiepolicy="single_host_origin"
data-width="iconOnly">
</button>
我正在使用PHP
並通過使用1.1版來解決此問題。的google-api-php-client
假設下面的代碼4用於一個用戶重定向到谷歌認證頁面:
$client = new Google_Client();
$client->setAuthConfigFile('/path/to/config/file/here');
$client->setRedirectUri('https://redirect/url/here');
$client->setAccessType('offline'); //optional
$client->setScopes(['profile']); //or email
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
exit();
假設有效的認證碼返回到redirect_url
,下面將產生從所述認證令牌代碼以及提供基本的配置文件信息:
//assuming a successful authentication code is return
$authentication_code = 'code-returned-by-google';
$client = new Google_Client();
//.... configure $client object code goes here
$client->authenticate($authentication_code);
$token_data = $client->getAccessToken();
//get user email address
$google_oauth =new Google_Service_Oauth2($client);
$google_account_email = $google_oauth->userinfo->get()->email;
//$google_oauth->userinfo->get()->familyName;
//$google_oauth->userinfo->get()->givenName;
//$google_oauth->userinfo->get()->name;
//$google_oauth->userinfo->get()->gender;
//$google_oauth->userinfo->get()->picture; //profile picture
但是,不返回位置。 New YouTube accounts don't have YouTube specific usernames
如何獲取位置? – SoftSan
使用此範圍我無法獲取性別信息(我已將性別信息公開)。我已經嘗試過oauth playground developers.google.com/oauthplayground。我想在服務器端使用REST API來做到這一點。你能幫助我嗎? –
既不能獲得性別。而且在某些情況下,除了電子郵件外,沒有任何內容可以返回想法? –
如果您處於客戶端Web環境中,則新的auth2 javascript API包含非常需要的getBasicProfile()
函數,該函數返回用戶的姓名,電子郵件和圖像URL。
但是,實際的API網址是什麼?我查看了文檔,找不到實際的API URL。谷歌似乎推動我們到他們的SDK,但不是每個人都想使用SDK。 – Supertecnoboff
我用上面的網址,但無法獲取用戶的個人資料。只有'{'。 Plz可以發佈一些代碼或鏈接。提前致謝。 – Panache
可以詳細說明如何使用上述網址獲取用戶個人資料... plz .. – Panache
嚴正,只需通過OAuth 2授權該請求即可。該URL返回當前登錄用戶的數據。如果您發出請求但不發送OAuth標頭,它會給您一個錯誤。 –