Использование учетной записи Google в качестве входа в систему, что дальше?

Я разрабатываю приложение для Android, которое будет иметь API-подобную серверную часть. И это приложение будет иметь механизмы входа пользователей. Я хочу использовать учетную запись google/fb/twitter в качестве данных для входа, так как цель приложения очень социальная.

Я уже читал об использовании учетной записи Google, хранящейся в телефоне, в качестве проверки пользователя ( Как использовать Google Аккаунты как логин ). Проблема в том, что я не знаю, что делать тогда? Как я понял, аккаунт-менеджер, наконец, даст мне токен. Тогда что мне с этим делать? Как сообщить серверу, что пользователь вошел в систему? Как мне хранить этот токен, так как я понял, что этот токен может измениться при аннулировании через некоторое время...

И еще кое-что. Что мне делать, когда пользователь входит в свою учетную запись G в первый раз? Я хочу получить его аватар G и отображаемое имя, например, и сохранить их на сервере, тем самым сэкономив пользователю кучу кликов? Я их как-то отправляю с телефона или как-то получаю с сервера?

Эти же вопросы могут возникнуть позже и для FB.

Надеюсь, я правильно задал свой вопрос, так как это немного более общий вопрос...

ТИА.


person Djumaka    schedule 14.07.2011    source источник


Ответы (3)


Я думаю, что этот вопрос охватывает именно то, что вы спрашиваете.

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

person thomas88wp    schedule 18.12.2012

Google использует OpenId, в то время как у FB есть своя фишка. Вам понадобятся разные кодовые пути для этих двух.

http://www.sozkan.com/blog/2010/09/24/very-quick-openid-integration-tutorial/

Конечно, это зависит от URL-адресов для управления данными — вам нужно будет обернуть это в свой код, если вы хотите, чтобы все это происходило внутри. Когда у вас есть токен, вы можете уведомить свой код на стороне сервера о том, что это такое, срок службы и т. д.

Информация о различиях: http://thenextweb.com/socialmedia/2010/11/04/facebook-connect-oauth-and-openid-the-differences-and-the-future/

person ethrbunny    schedule 14.07.2011
comment
Вопрос был именно в том, какова процедура для клиент-серверного приложения. Для веб-приложения этот вопрос не актуален, так как вся работа выполняется в одном месте. Здесь другая ситуация - пользователь аутентифицируется на КЛИЕНТЕ, а СЕРВЕР об этом еще не знает. Итак, как мне на самом деле уведомить его о том, что пользователь аутентифицирован с определенными учетными данными, и как проверить все это, и так далее, и тому подобное... - person Djumaka; 15.07.2011
comment
Вы должны аутентифицироваться через КЛИЕНТ и уведомить СЕРВЕР, как только получите добро, ИЛИ - вы сделаете это наоборот - клиент скажет серверу аутентифицироваться, а затем отправит результат обратно клиенту. Большинство серверных языков (PHP, JAVA, Perl и т. д.) поддерживают какой-либо веб-коммуникации (например, Curl), так что это один из способов аутентификации. Google также может предложить путь SOAP. - person ethrbunny; 17.07.2011
comment
Проголосовали против, потому что HTTP-обработка URL-адресов вручную повторяет поведение AccountManager и отбрасывает существующий список учетных записей Android, вошедших в систему. - person Phlip; 07.10.2013

Просто чтобы закончить этот (устаревший) вопрос и оставить где-нибудь свой фрагмент кода, я начал входить в систему с помощью Google, используя PreferenceScreen Activity с этим onCreate() кодом:

    ArrayList<String> list = new ArrayList<String>();
    list.add("https://www.googleapis.com/auth/userinfo.profile");
    final GoogleAccountCredential credential = 
        GoogleAccountCredential.usingOAuth2(getApplicationContext(), list); 
    Preference acctValue = findPreference("GMail");  // A <Preference> in the XML...

    acctValue.setOnPreferenceClickListener(new OnPreferenceClickListener(){
        @Override
        public boolean onPreferenceClick(Preference preference) {
            startActivityForResult(credential.newChooseAccountIntent(), 1);
            return false;
        }
    });

И они потребовали добавить этих сомнительных персонажей в мою папку libs:

google-api-client-android-1.17.0-rc.jar
google-play-services.jar
google-api-client-1.17.0-rc.jar
google-http-client-1.17.0-rc.jar
person Phlip    schedule 07.10.2013