3

Начиная с Google Cloud Endpoint, например, крестики-нолики (см https://github.com/GoogleCloudPlatform/appengine-endpoints-tictactoe-java)Как добавить аутентификацию в конечные точки Google Cloud?

Затем создайте "AppEngine Connected Android Project" с помощью Ellipse в последнем плагином Android Ellipse (см https://developers.google.com/eclipse/docs/endpoints-androidconnected-gae)

Теперь это создает конечных точек без аутентификации.

// @Api(name = "messageEndpoint") 
//NO AUTHENTICATION; OPEN ENDPOINT! 

Теперь попробуйте добавить аутентификацию с использованием приложения tic tac toe в качестве примера.

@Api(name = "messageEndpoint", 
version = "v1", 
clientIds = {Ids.WEB_CLIENT_ID, Ids.ANDROID_CLIENT_ID, Ids.IOS_CLIENT_ID, com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID}, 
audiences = {Ids.ANDROID_AUDIENCE} 

)

В случае OAuth исключения добавить следующее:

//public void sendMessage(@Named("message") String message) 
    //throws IOException { 

public void sendMessage(@Named("message") String message) 
    throws OAuthRequestException,IOException { 

И тест с помощью API проводника, https: // [ваш-приложение-] .appspot.com/_ah/api/explorer, я заменил [your-app-id] своим конкретным идентификатором приложения.

POST https://[your-app-id].appspot.com/_ah/api/messageEndpoint/v1/sendMessage/test 
X-JavaScript-User-Agent: Google APIs Explorer 

503 Service Unavailable 


cache-control: private, max-age=0 
content-encoding: gzip 
content-length: 193 
content-type: application/json; charset=UTF-8 
date: Mon, 01 Apr 2013 22:57:17 GMT 
expires: Mon, 01 Apr 2013 22:57:17 GMT 
server: GSE 

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "backendError", 
    "message": "java.lang.NoClassDefFoundError: Could not initialize class com.brooklynmarathon.citysync.endpoints.EMF" 
    } 
    ], 
    "code": 503, 
    "message": "java.lang.NoClassDefFoundError: Could not initialize class com.brooklynmarathon.citysync.endpoints.EMF" 
} 
} 

Я попытался исследователь с крестиками носка приложением Tac, что я скачал (спасибо Google Dev Rel) и построен и закачанное здесь: https://brooklynmarathon.appspot.com/_ah/api/explorer

Когда я пытаюсь получить доступ к списку оценки, я вижу:

GET https://brooklynmarathon.appspot.com/_ah/api/tictactoe/v1/score 

X-JavaScript-User-Agent: Google APIs Explorer 


Response 


401 Unauthorized 

- Hide headers - 

cache-control: private, max-age=0 
content-encoding: gzip 
content-length: 193 
content-type: application/json; charset=UTF-8 
date: Tue, 02 Apr 2013 01:14:40 GMT 
expires: Tue, 02 Apr 2013 01:14:40 GMT 
server: GSE 
www-authenticate: GoogleLogin realm="https://www.google.com/accounts/ClientLogin", service="xapi" 

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "required", 
    "message": "com.google.appengine.api.oauth.OAuthRequestException: Invalid user.", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
    ], 
    "code": 401, 
    "message": "com.google.appengine.api.oauth.OAuthRequestException: Invalid user." 
} 
} 

Мой вопрос почему крестики нолики пример имеет заголовок: "WWW-Authenticate: GoogleLogin области действия =" https://www.google.com/accounts/ClientLogin», услуги = "XAPI" и

В общем, как мы можем добавить аутентификацию в созданные «Консолидированные Android-приложения», созданные для Android?

Из веб-приложений, клиентов Android и iOS-клиентов, и можем ли мы протестировать его из проводника api?

+0

Какие значения используются для 'Ids. * _ CLIENT_ID'? – Drux

+0

+ Drux Спасибо, что спросили, но я перешел и использовал решение python, которое работает, поэтому нет необходимости отвечать на это. –

ответ

1

«Как мы можем добавить аутентификацию к« конечным точкам », связанным с проектом Android Connected Android?»

Инструкции для делания, которые здесь:
https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-calls

Вы также увидите инструкции по прошивке и Javascript там (на последующих страницах).

На стороне сервера вам необходимо добавить объект User в качестве первого параметра ваших методов конечных точек.

Я не знаю ответа на другие вопросы.

+0

Спасибо Том. Я пропустил параметр User из образца tic tac toe, поэтому я добавил его, я все еще вижу ошибки, такие как «com.google.api.server.spi.SystemService invokeServiceMethod: null java.lang.ExceptionInInitializerError» Спасибо за вашу помощь. и если у вас или у кого-либо есть рекомендация по наилучшей практике для отладки ошибок, таких как эти и тестирование, отправьте их. –

+0

Я предполагаю, что ошибка - ошибка времени выполнения Android.Все, что я могу предложить, это указание, что вы не сделали все, что необходимо, прежде чем вызывать службу. Вам нужно будет опубликовать дополнительную информацию, и, вероятно, это должен быть отдельный вопрос. – Tom

Смежные вопросы