2014-09-05 48 views
1

我想爲我的GDK應用程序設置MyGlass身份驗證,如Google Glass GDK Authentication using PHP。用戶通過MyGlass登錄我的網站,進行身份驗證,然後嘗試使用Mirror API插入帳戶。使用Java示例和PHP庫的MyGlass身份驗證「無效值」響應

我遵循http://goo.gl/DVggO6中描述的「工作」PHP示例。但是,我總是從Google API服務器返回一個錯誤,提示「無效的值」,但沒有進一步的信息。

我已經重複檢查了我的密鑰和密鑰文件,並驗證了Mirror API快速入門的作用。所以一切似乎都應該正確設置。

除了提供解決方案,任何人都可以提出方法來解決問題嗎?是在本地Web服務器上運行它並使用Wireshark檢查POST正文的最佳途徑?


Google_Service_Exception with message Error calling POST https://www.googleapis.com/mirror/v1/accounts/bfb41d5c745d***/com.lumilogger.glassware/username%40email.com?key=********: (400) Invalid Value in /home7/tallyhea/public_html/Google/Http/REST.php:81 

Stack trace: 
#0 /home7/tallyhea/public_html/Google/Http/REST.php(44): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request)) 
#1 /home7/tallyhea/public_html/Google/Client.php(503): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) 
#2 /home7/tallyhea/public_html/Google/Service/Resource.php(195): Google_Client->execute(Object(Google_Http_Request)) 
#3 /home7/tallyhea/public_html/Google/Service/Mirror.php(409): Google_Service_Resource->call(insert, Array, Google_Service_...) 
#4 /home7/tallyhea/public_html/functions.php(55): Google_Service_Mirror_Accounts_Resource->insert(bfb41d5c745***, com.lumilogger...., [email protected], Object(Google_Service_Mirror_Account)) 
#5 /home7/tallyhea/public_html/glass_oauth.php(71): insert_account(Object(Google_Service_Mirror), bfb41d5c74***, [email protected]) 
#6 {main}" 

而且JSON響應從服務器返回的是相當神祕:

body: { "error": { "errors": [ { "domain": "global", "reason": "invalid", "message": "Invalid Value" } ], "code": 400, "message": "Invalid Value" } } 

我也嘗試過玻璃的MyGlass認證頁面顯示的完整的Java例子,並得到了同樣的錯誤:

Invoking createAccount() 
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Invalid Value", 
    "reason" : "invalid" 
    } ], 
    "message" : "Invalid Value" 
} 
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145) 
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) 
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312) 
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1049) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460) 
at glassAuth.GlassAuth.createAccount(GlassAuth.java:96) 
at glassAuth.GlassAuth.main(GlassAuth.java:52) 

這可能是由於code.google上的Google API配置不正確所致.com或類似的東西?

也許我無法插入帳戶,因爲Google不知道我用來插入帳戶的「帳戶名稱」?

+0

400響應表示語法錯誤。如果我在你的例子中使用URL,我會得到一個404響應。我不得不故意將URL改爲400,所以這可能是URL格式的問題。如果您直接訪問https://www.googleapis.com/mirror/v1/accounts/ {userToken}/com.example.myapp /用戶名%40email.com(具有更新的值),您會收到什麼回覆在瀏覽器中? – Anthony 2014-09-10 02:35:35

+0

如果我按照你的要求做,我會回覆「Not Found」。這是否表明我的應用沒有按照Google的Glassware Review Request流程進行正確配置?我應該看到什麼? – 2014-09-10 03:35:18

+0

也可能是thr post body本身的語法問題。很高興看到原始請求被髮送。 – Anthony 2014-09-10 03:46:33

回答

1

所以我不再得到錯誤400響應或任何錯誤。我還沒有在Glass面上測試它,但現在它可能正在工作。祕密是在調用insert(userToken,ACCOUNT_TYPE,accountName,account)時,在ACCOUNT_TYPE字段中使用「lumilogger」而不是「com.lumilogger.glassware」。其實,回顧我的Glassware Review Request電子郵件(Google今天爲我更新),我沒有指定「賬戶類型」。但今天他們更新爲「lumilogger」。現在,通過插入這個賬戶類型,問題就解決了。

吸取的經驗教訓是: 1.您需要在您的審閱請求中指定一個帳戶類型。 2.您傳遞給insert()的帳戶類型是您在(1)中指定的帳戶類型,而不是您的APK包名稱(例如com.google.test等)。