Я разрабатываю приложение для Android для интернет-газетной компании. Компания уже разработала и разместила свои API в Google App Engine с поддержкой OAuth 2.0.
Поэтому я должен разработать приложение для Android, которое взаимодействует с их развернутым бэкэнд-API с поддержкой OAuth 2.0 и получает ответ содержимого от назначенного API Google. Исследователь.
поэтому, согласно документации по конечным точкам облака Google для клиентов Android (например, моего приложения), пытающихся выполнить аутентифицированные вызовы на конечные точки с поддержкой OAuth 2.0, я был направлен на:
- Настройте мой Android-клиент (мое приложение для Android), чтобы предоставить учетные данные объекту службы.
- используйте средство выбора учетных записей, чтобы поддерживать выбор пользователем учетных записей для входа.
Я следовал инструкциям на веб-сайте Google Cloud Endpoint, но не понять примеры кодов, которые использовались для объяснения, поэтому я попытался придумать это:
class EndpointsAsyncTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new AndroidJsonFactory();
try {
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(CLIENT_EMAIL)
.setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/userinfo.email"))
.setServiceAccountPrivateKeyFromP12File(new File("file.p12"))
.build();
/*so now what do I do with the credential object
and how do I set the root URL (https://project-id-endpoints.appspot.com/_ah/api)
that the android client(this android app)
will connect to in the backend API call
*/
}
catch(GeneralSecurityException gse){
gse.printStackTrace();
}
catch(IOException ioe){
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
всякий раз, когда я запускаю свои коды, отчет журнала в консоли разработчика Google говорит
«Неавторизованный доступ» означает, что вызов аутентификации не работает...
Ниже приведен мой код для открытия соединения GET URL с одним из содержимого службы API:
public String open() throws IOException{
InputStream inputStream = null;
int len = 500;
try {
URL url = new URL("https://project-name-api-endpoints.appspot.com/_ah/api/core/v5.1.1/info/category/en");
URLConnection urlConnection = url.openConnection();
inputStream = urlConnection.getInputStream();
String content = readIt(inputStream, len);
return content;
}//end try
finally {
if(inputStream != null)
{
inputStream.close();
}
}
}
У меня есть вопрос:
Что мне делать с объектом учетных данных и как установить корневой URL-адрес (https://project-id-endpoints.appspot.com/_ah/api
), к которому клиент Android (это приложение для Android) будет подключаться в вызове внутреннего API