使用 PHP 的 GDK 身份验证

GDK Authentication using PHP

这是我的测试代码:

=========================================

<?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("lensZheng@gmail.com");
$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", "ccfsz.public@gmail.com");
?>

==========================================

这是我遇到的异常:

==========================================

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.Now 上切换 "ON" 后我无法获得我的应用程序 我正在尝试将我的眼镜恢复出厂设置,但两个小时后,我没有收到任何表明我已重置成功的信息。 (现在我的申请不公开可见)

有很多事情我想知道...首先错误中的路径不在您的代码中..所以无法确定错误的实际来源。

关于 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);

此外,您只能在您的 APK 登陆 MyGlass 后(在审核过程中发生)测试和使用此 API。如果您还没有这样做,我还建议您以 Mirror API PHP Quickstart 作为起点来了解身份验证的工作原理。