Использование authToken для данных о здоровье Google - PullRequest
2 голосов
/ 05 апреля 2011

Мы разработали и опубликовали приложение для Google Health. Теперь мы хотим, чтобы каждый раз входить в учетную запись Gmail не нужно, спрашивая имя пользователя и пароль. Чтобы сделать это, я слышал, что у меня могут быть следующие варианты. 1. OAuth 2. Менеджер по работе с клиентами 3.

Проблема с OAuth заключается в том, что он будет проходить через Android -> Web App -> Health Path, поэтому мне нужно будет также разработать веб-приложение, которое мы не хотим делать прямо сейчас.

Итак, я пытаюсь использовать Account Manager, вот мой код, с помощью которого я могу получить список учетных записей и действительный authToken для выбранной учетной записи.

AccountManager mgr = AccountManager.get(getApplicationContext()); 
        System.out.println("Got account manager");

        Account[] accts = mgr.getAccounts();
              } 
        Account acct = accts[0];   
        AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "android", null, this, null, null); 
        Bundle authTokenBundle = accountManagerFuture.getResult();  
        System.out.println("Account name "+accts[0].name);

        String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString(); 
        System.out.println("Got token:"+authToken);

Но теперь я не совсем понимаю, как использовать этот токен для доступа к данным о здоровье. Для получения демографической ленты мы использовали следующий код, в котором мы явно заставили пользователя войти в наше приложение.

    String queryURL = "https://www.google.com/health/feeds/profile/ui/" + profileId +"/-/DEMOGRAPHICS";
getDemoGrInfoQuery = new Query(new URL(queryURL));
        Feed dempGrResultFeed;
        globals = new Globals();
    dempGrResultFeed = healthService.query(getDemoGrInfoQuery, Feed.class);

И, таким образом, мы использовали для получения Фида, используя URL.
А теперь я хочу пропустить процесс входа в систему и использовать вышеуказанный authToken для получения канала. Как это можно сделать?

Любая помощь будет очень признательна !!! Заранее спасибо,

1 Ответ

1 голос
/ 06 апреля 2011

Поскольку предполагается, что стандартная процедура OAuth работает, вы открываете URL-адрес OAuth в WebView (или что-либо подобное) со всеми необходимыми параметрами, пользователи предоставляют Google (не ваше приложение) свои имя пользователя и пароль, а затем Google даетВы токен, который вы можете использовать для ваших будущих коммуникаций.

Таким образом, пользователю не нужно предоставлять вам свои учетные данные для входа.Они дают его только Google, а Google дает вам токен, который будет проверять подлинность вашего приложения каждый раз, когда вы его используете.

Я думаю, что вам следует с этим согласиться, так как для этого требуется открыть только WebView.один раз, если пользователь не выходит из Google с помощью вашего приложения или не запрещает доступ к вашему приложению.

После получения токена вы просто начинаете опрашивать Google с этим токеном и никогда не запрашивать у пользователя учетные данные для входа.довольно легко.

ОБНОВЛЕНИЕ

После нашего разговора в чате, позвольте мне сказать вам, что вам придется зарегистрировать приложение в Google, которое даст вам идентификатор приложенияэтот appID будет использоваться вашим Android-приложением, чтобы сообщить Google, что он запрашивает разрешение от имени приложения, к которому относится этот appID.

UPDATE 2

  • откройте Google OAUth со всеми параметрами, Google даст вам код
  • , используйте этот код и снова создайте запрос POST к Google, и Google теперь вернет длительный AccessToken

Затем вы можете использовать этот AccessToken во всех ваших будущих коммуникациях

...