2016-02-23 3 views
1

У меня есть простой API и простой стол, работающий на Azure Mobile Services. Для обоих из них требуется аутентификация для доступа. Я также установил Google Authentication. Теперь, когда я пытаюсь подключиться к Mobile Service с помощью приложения Android, я получаю WebView на странице входа в Google, в то время как я уже аутентифицировал пользователя при запуске приложения. Я выполнил следующее руководство по настройке аутентификации на android и проверил проводку одного объекта в таблицу.Azure Mobile Services для родных пользователей Android

https://azure.microsoft.com/en-in/documentation/articles/mobile-services-android-how-to-use-client-library/#authentication

Вот мой код для аутентификации и добавления к таблице. Также данные не вставляются в таблицу после входа в систему с использованием этого WebView. Он не работает без каких-либо ошибок или предупреждений.

Создание клиента. На портале Azure нет ключа API, и я прочитал here, что сейчас не требуется. Но SDK не обновляется, поэтому я передал пустую строку.

try { 
    mClient = new MobileServiceClient(
      "https://memoriesapp.azurewebsites.net", 
      "", 
      this 
    ); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} 


final MobileServiceTable<Trip> mTripTable = mClient.getTable(Trip.class); 
// Login using the Google provider. 

ListenableFuture<MobileServiceUser> mLogin = mClient.login(MobileServiceAuthenticationProvider.Google); 

Futures.addCallback(mLogin, new FutureCallback<MobileServiceUser>() { 
    @Override 
    public void onFailure(Throwable exc) { 

    } 

    @Override 
    public void onSuccess(MobileServiceUser user) { 
     Snackbar.make(findViewById(R.id.new_trip_layout),String.format(
       "You are now logged in - %1$2s", 
       user.getUserId()), Snackbar.LENGTH_LONG); 
    } 
}); 

new AsyncTask<Void, Void, Void>() { 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      mTripTable.insert(trip1).get(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
}.execute(); 

Это то, что я получаю, когда я иду к этой деятельности:

Imgur

ответ

1

Похоже, вы смешивания и сопоставления Azure App Service с Azure Mobile Services.

Для мобильных служб требуется ключ API. Службы App нет.

Вы указываете документацию для мобильных служб - если вы следуете этому руководству, вам нужно добавить свой ключ API. Если вы этого не сделаете, бэкэнд вернет 401 Unauthorized, и вы, скорее всего, перенаправитесь на страницу входа.

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