Разработвам приложение за Android за компания за онлайн вестници. Компанията вече разработи и хоства своите API на Google App Engine с поддръжка на OAuth 2.0.
Така че аз трябва да разработя приложение за Android, което комуникира с техния разгърнат API на бекенда с поддръжка на OAuth 2.0 и да извлича отговора на съдържанието от присвоения им Google API Изследовател.
така че според документацията на облачните крайни точки на 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 Developer Console казва
„Uоторизиран достъп“, което означава, че повикването за удостоверяване не работи...
По-долу е моят код за отваряне на 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 на бекенда