Это мой тестовый код:
=========================================
<?php
include_once "templates/base.php";
session_start();
require_once realpath(dirname(__FILE__) . '/../autoload.php');
function get_service_client(){
$service_client_id="540223414844-tj91ijj3u99c44bhmftb8m20tgon57hc.apps.googleusercontent.com";
$service_email="540223414844-tj91ijj3u99c44bhmftb8m20tgon57hc@developer.gserviceaccount.com";
$app_name="Eyenotes";
$key_file_location='C:/Users/Yuan/Desktop/eyenotes-81e92b7df1f1.p12';
$browser_api_key="AIzaSyAplINlgfGWGJ8pD1Bxlr8wg7i8ZNVOS1A";
$client = new Google_Client();
$client->setApplicationName("Eyenotes"); // Set your application name
$client->setClientId("540223414844-tj91ijj3u99c44bhmftb8m20tgon57hc.apps.googleusercontent.com");
$client->setDeveloperKey("AIzaSyAplINlgfGWGJ8pD1Bxlr8wg7i8ZNVOS1A");
$key = file_get_contents("C:/Users/Yuan/Desktop/eyenotes-81e92b7df1f1.p12");
$cred = new Google_Auth_AssertionCredentials(
$service_email,array('https://www.googleapis.com/auth/glass.thirdpartyauth'),$key
);
$client->setAssertionCredentials($cred);
return $client;
}
function insert_account($service,$userToken, $email)
{
$accountType='com.eyenotes';
$userDataArray= array();
$userData1= new Google_Service_Mirror_UserData();
$userData1->setKey('email');
$userData1->setValue("[email protected]");
$userDataArray[]=$userData1;
$authTokenArray= array();
$authToken1= new Google_Service_Mirror_AuthToken();
$authToken1->setAuthToken('randomtoken');
$authToken1->setType('randomType');
$authTokenArray[]=$authToken1;
$postBody = new Google_Service_Mirror_Account();
$postBody->setUserData($userDataArray);
$postBody->setAuthTokens($authTokenArray);
try {
$account = $service->accounts->insert($userToken, $accountType, $email, $postBody);
echo $account;
} catch (Exception $e) {
}
}
$service_client= get_service_client();
$mirrorService = new Google_Service_Mirror($service_client);
insert_account($mirrorService, "6164da1732ea09b4", "[email protected]");
?>
==========================================
Это исключение, которое я получил:
==========================================
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/mirror/v1/accounts/6164da1732ea09b4/com.eyenotes/ccfsz.public%40gmail.com?key=AIzaSyDxnl16J8Eiwv00k_1yzw_VoRr9wD32qao: (400) Invalid Value' in D:\MySoftware\wamp\www\insert\src\Google\Http\REST.php on line 111
Google_Service_Exception: Error calling POST https://www.googleapis.com/mirror/v1/accounts/6164da1732ea09b4/com.eyenotes/ccfsz.public%40gmail.com?key=AIzaSyDxnl16J8Eiwv00k_1yzw_VoRr9wD32qao: (400) Invalid Value in D:\MySoftware\wamp\www\insert\src\Google\Http\REST.php on line 111
=========================================
Объяснение параметров:
Тип учетной записи я предоставляю Google.
Пользовательский токен я получил от аутентификации URL, который я предоставляю Google.
Ключ API браузера генерируется при создании нового ключа в консоли разработчика.
Скажите, пожалуйста, в чем проблема в моем коде?
Я перехватил исключение, и оно больше не вызывало исключение, но я все еще не могу получить информацию об учетной записи, используя mAccountManager.getAccountByType («com.eyenotes»). И в консоли разработчика Google, это показывает, что я успешно запросил. Во-вторых, я не могу получить свое приложение после переключения «ВКЛ» на Glassware. Теперь я пытаюсь восстановить заводские настройки своего стакана, но через два часа я не получил никакой информации, указывающей на успешный сброс. (сейчас моя заявка не видна публично)
Есть много вещей, которые я хочу знать … Во-первых, путь к ошибке не указан в вашем коде. Поэтому я не могу быть уверен, откуда на самом деле происходит ошибка.
Могут быть и другие проблемы, связанные с аутентификацией в GDK, просто для того, чтобы предупредить вас … Вы можете временно сохранить параметр запроса userToken, отправленный с этим запросом (не сохранять его постоянно), а затем аутентифицировать пользователя какой бэкэнд у вас работает. Оттуда вы, вероятно, запросите правильную область для их учетной записи Google. Как только это будет сделано, вы можете создать свой зеркальный сервис как обычно в PHP, а затем использовать коллекцию учетных записей:
// $myClient would contain the typical Google_Client() setup
// See PHP quickstart for example
$myMirrorService = new Google_Service_Mirror($myClient);
// Set your inputs to insert() as needed
$accounts = $myMirrorService->accounts->insert($userToken, $accountType, $accountName, $postBody);
Кроме того, вы можете протестировать и использовать этот API только после того, как ваш APK окажется на MyGlass (что происходит в процессе проверки). Я также рекомендовал бы Зеркальное API PHP Quickstarв качестве отправной точки, чтобы понять, как работает аутентификация, если вы еще этого не сделали.
Других решений пока нет …