Вход с помощью G+ – почему не работает файл scope plus.login в одиночку?

Я просмотрел десятки ответов по этой теме, следовал официальному краткому руководству и сделал все, что мог придумать.

Я настроил свою консоль разработчика Google во всех ее частях, включая настройку правильных ключей отладки SHA1 как для OAuth, так и для доступа к общедоступному API (даже не знаю, было ли это необходимо).

Проблема

У меня проблемы с настройкой областей для моего GoogleApiClient.

googleClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Plus.API)
        .addScope(...)
        .build();

Я могу войти в систему с различными комбинациями областей:

            .addScope(new Scope("https://www.googleapis.com/auth/plus.login"))
            .addScope(new Scope("https://www.googleapis.com/auth/plus.profile.emails.read"))
            //WORKS! OR:

            .addScope(Plus.SCOPE_PLUS_LOGIN) // == https://www.googleapis.com/auth/plus.login
            .addScope(Plus.SCOPE_PLUS_PROFILE) // == https://www.googleapis.com/auth/plus.me
            //WORKS! OR:

            .addScope(new Scope("https://www.googleapis.com/auth/plus.profile.emails.read"))
            //WORKS! OR:

            .addScope(Plus.SCOPE_PLUS_PROFILE) // == https://www.googleapis.com/auth/plus.me
            //WORKS!

Все они работают хорошо, и я вижу их отражение в запросах (т. е. если я установлю login + emails.read, диалог фактически запросит эти два).

Однако мне нужно только "https://www.googleapis.com/auth/plus.login". Если я просто установлю .addScope(new Scope("https://www.googleapis.com/auth/plus.login")) или, что то же самое, .addScope(Plus.SCOPE_PLUS_LOGIN), я столкнусь с хорошо задокументированной ошибкой Toast:

Произошла внутренняя ошибка.

Так что этот прицел (единственный, который мне нужен) работает в связке с другими (например, plus.me), а не в одиночку. Почему так и что я могу сделать?


person natario    schedule 14.05.2015    source источник
comment
Я сделал те же выводы, что и вы, и до сих пор не ответил. В итоге я добавил как Plus.SCOPE_PLUS_PROFILE, так и Plus.SCOPE_PLUS_LOGIN, потому что сам по себе вход в систему приводит к нулевому разрешению. Я еще не нашел причину или решение, почему это так.   -  person portfoliobuilder    schedule 09.06.2015


Ответы (2)


вы можете заменить этот код следующим, который сработал для меня.

   mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API, Plus.PlusOptions.builder().build())
            .addScope(Plus.SCOPE_PLUS_LOGIN).build();
person Suman Timalsina    schedule 06.04.2016

mGoogleApiClient = новый GoogleApiClient.Builder(этот) .addConnectionCallbacks(этот) .addOnConnectionFailedListener(этот) .addApi(Plus.API, Plus.PlusOptions.builder().build()) .addScope(Plus.SCOPE_PLUS_LOGIN).build();

Использование Plus.SCOPE_PLUS_LOGIN не является хорошей идеей, так как «Плюс» устарел.

person Artur Ex    schedule 25.08.2016