每次都忘,紀錄一下:
- 在 Android Studio 的 Project 位置,點擊 app 目錄,接著按右鍵,選 New -> Folder -> Assets Folder,用預設 main 中即可
- 接著 Android Studio 就會自動長出 assets 目錄,在路徑上為 app/src/main/assets/
https://developers.google.com/+/integrations-shutdown原先是靠這 Google Plus API 取得 Email address:
停用 Google+ 整合服務
2019 年 3 月 7 日起,所有網站上與行動應用程式中的 Google+ 整合功能將全部停止運作。詳細情形如下:
網路整合 (例如外掛程式與互動訊息) 將停止提供服務。如果網站擁有者未採取任何行動,網站的版面配置和/或功能可能會受到影響。
行動應用程式整合 (例如 +1 按鈕、分享到 Google+ 與應用程式活動) 將停止運作。
我們將從 1 月下旬起逐漸停用相關功能。最早從 2019 年 1 月 29 日起,網站與行動應用程式整合功能會偶爾發生失敗的情形。
我們強烈建議開發人員儘快從其網站上和/或行動應用程式中移除相關程式碼。我們也將陸續停用 Google+ API 和 Google+ 登入功能。詳情請參閱這份額外
通知。
雖然我們即將停用 Google+ 一般使用者版本,但我們同時致力為企業機構 提供 Google+ 服務。Google+ 即將換上全新風貌並加入新功能,如需詳細資訊, 請參閱這篇網誌文章
<?php
$profile_ret = @json_decode(file_get_contents('https://www.googleapis.com/plus/v1/people/me?'.http_build_query( array(
'access_token' => $access_token,
))), true);
<?php
$profile_ret = @json_decode(file_get_contents('https://people.googleapis.com/v1/people/me?'.http_build_query( array(
'personFields' => 'names,nicknames,emailAddresses,coverPhotos,photos',
'access_token' => $access_token,
))), true);
<?php
require_once 'vendor/autoload.php';
$client = new Google_Client();
$client->setClientId($oauth_project_client_id);
$client->setClientSecret($oauth_project_secret_key);
$client->setAccessType("offline");
$client->addScope(['email','profile']);
$client->setRedirectUri($oauth_callback_url);
$token = $client->fetchAccessTokenWithAuthCode($code);
$token_data = $client->verifyIdToken();
$uid = $token_data['sub'];
$email = isset($token_data['email_verified']) && $token_data['email_verified'] ?$token_data['email'] : NULL;
$ curl -s 'https://people.googleapis.com/v1/people/me?personFields=names%2Cnicknames%2CemailAddresses%2CcoverPhotos&access_token=USER_ACCESS_TOKEN'
{
"resourceName": "people/UID",
"etag": "XXXXXXXXXXXX",
"names": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "UID"
}
},
"displayName": "NICKNAME",
"familyName": "LAST_NAME",
"givenName": "FIRST_NAME",
"displayNameLastFirst": "LAST_NAME, FIRST_NAME"
}
],
"coverPhotos": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "UID"
}
},
"url": "https://XXX.googleusercontent.com/cXXXXXXX",
"default": true
}
],
"emailAddresses": [
{
"metadata": {
"primary": true,
"verified": true,
"source": {
"type": "ACCOUNT",
"id": "UID"
}
},
"value": "USER_EMAIL@gmail.com"
}
]
}