Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не работает авторизация с одним API_KEY в разных приложениях #45

Open
but4er007 opened this issue Sep 8, 2023 · 3 comments

Comments

@but4er007
Copy link

ru.ok:odnoklassniki-android-sdk:2.1.8
На устройстве должно быть установлено приложение "Одноклассники" (без него все работает).
При попытке авторизоваться приходит ошибка "Bad package name".
У нас 3 версии приложения, на которых мы используем один appId и appKey для одноклассников:

  1. Основное, на нем все работает
  2. Отличается только package name (applicationId), ошибка "Bad package name"
  3. Отличается package name и подпись (sha256), ошибка "Bad package name"

В админке нигде не задается package name, поэтому непонятно, почему приходит такая ошибка и как ее фиксить.

Старт авторизации:

    Odnoklassniki.instance.requestAuthorization(activity, "okauth://auth", OkAuthType.ANY, OkScope.VALUABLE_ACCESS, OkScope.PHOTO_CONTENT)

Обработка результат:

    fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (!Odnoklassniki.hasInstance()) return
        Odnoklassniki.instance.onAuthActivityResult(requestCode, resultCode, data, object : OkListener {
            override fun onSuccess(json: JSONObject) {
                try {
                    val token = String.format("access_token: %s", json.getString("access_token"))
                    dispatchAsync(Data(State.TOKEN_RECEIVED, token))

                } catch (e: JSONException) {
                    dispatchAsync(Data(State.ERROR_TOKEN_RECEIPT))
                    errorLog("OK", "unable to parse login request ${e.message}")
                }
            }

            override fun onError(error: String?) {
                // error == "Bad package name"
                dispatchAsync(Data(State.CANCELLED))
                errorLog("OK", "onError $error")
            }

        })
    }
@dynaevdv
Copy link

Идентичная проблема

@lintax
Copy link
Member

lintax commented Sep 14, 2023

Насколько я понимаю, проблема возникает, если на одном устройстве вы авторизовались с одним package name, и затем пробуете авторизоваться другим. Защита от кражи токена в таком сценарии действительно должна кидать ошибку.

На других устройствах, где пользуетесь только одним из этих приложений всё же ОК?

Рекомендуется для debug версии приложения отключать SSO в параметрах авторизации.

@dynaevdv
Copy link

dynaevdv commented Sep 14, 2023

@lintax Да, кейс именно такой. У нас есть несколько приложений, которые используют один appId одноклассников. Оба этих приложения могут быть установлены одновременно. И если пользователь авторизовался с помощью приложения ОК из одного приложения, а потом пытается авторизоваться из второго, то во втором приложении получает эту ошибку.

Возможно ли добавить в админке ОК валидные package name, чтобы позволить использовать SDK таким образом, при этом предотвратив возможность кражи токена?

Или может быть вы можете предложить другое решение для возникшей проблемы. Буду очень благодарен

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants