Миграция пользователя в новое приложение с использованием старого токена авторизации - пользовательский параметр InstallReferrer - PullRequest
0 голосов
/ 04 июля 2018

У меня есть два приложения в Google Play. Старый и новый. И я хотел бы использовать старый токен аутентификации в новом приложении, чтобы пользователям было проще.

  1. В старом приложении у пользователя есть всплывающее окно для установки нового приложения в Google Play.
  2. Я бы хотел передать маркер аутентификации в параметре в Google Play.
  3. После установки нового приложения я хочу сохранить токен в новом приложении.

Я пытался использовать Play Install Referrer Library , но это не сработало.

Другой способ заключался в использовании SharedPreferences, но MODE_WORLD_READABLE устарел.

Старое приложение:

try {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.<PACKAGENAME>&token=pokpok&refresh_token=lolol"));
    startActivity(intent);
} catch (Exception e) {
    e.printStackTrace();
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.<PACKAGENAME>?token=pokpok&refresh_token=lolol")));
}

Новый код приложения:

    private fun shouldGetTokenFromOldApp() {
        mReferrerClient = InstallReferrerClient.newBuilder(this).build()
        mReferrerClient.startConnection(object : InstallReferrerStateListener {

            override fun onInstallReferrerSetupFinished(responseCode: Int) {
                when (responseCode) {
                    InstallReferrerClient.InstallReferrerResponse.OK -> {
                        // Connection established
                        val response: ReferrerDetails = mReferrerClient.installReferrer
                        val url = "https://play.google.com/store?${response.installReferrer}"
                        Log.d("APP", "Token old app 1 : $url")
                        val uri: Uri = Uri.parse(url)
                        val token = uri.getQueryParameter("token")
                        val refreshToken = uri.getQueryParameter("refresh_token")

                        Log.d("APP", "Token old app 2 : $token - $refreshToken")
                        mReferrerClient.endConnection()
                    }
                    InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
                        // API not available on the current Play Store app
                    }
                    InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
                        // Connection could not be established
                    }
                }
            }

            override fun onInstallReferrerServiceDisconnected() {
                // Try to restart the connection on the next request to
                // Google Play by calling the startConnection() method.
            }
        })
    }

1 Ответ

0 голосов
/ 05 июля 2018

Это звучит как хорошая вещь для пользователей, но кажется очень опасной. Вы отправляете токен аутентификации - что-то, что, если у кого-то есть, может позволить ему войти в систему как этот пользователь где-нибудь через ненадежные системы, такие как общедоступные файлы или параметры ссылок в URL-адресах.

Если вам действительно нужно это сделать, я бы предложил использовать некоторую форму RPC между приложениями (IPC) для передачи токена после установки приложения. Одним из вариантов будет связыватель для службы, которая предоставляет аутентификацию.

...