Search in sources :

Example 1 with AppCredentials

use of com.keylesspalace.tusky.entity.AppCredentials in project Tusky by Vavassor.

the class LoginActivity method onButtonClick.

/**
     * Obtain the oauth client credentials for this app. This is only necessary the first time the
     * app is run on a given server instance. So, after the first authentication, they are
     * saved in SharedPreferences and every subsequent run they are simply fetched from there.
     */
private void onButtonClick(final EditText editText) {
    domain = validateDomain(editText.getText().toString());
    /* Attempt to get client credentials from SharedPreferences, and if not present
         * (such as in the case that the domain has never been accessed before)
         * authenticate with the server and store the received credentials to use next
         * time. */
    String prefClientId = preferences.getString(domain + "/client_id", null);
    String prefClientSecret = preferences.getString(domain + "/client_secret", null);
    if (prefClientId != null && prefClientSecret != null) {
        clientId = prefClientId;
        clientSecret = prefClientSecret;
        redirectUserToAuthorizeAndLogin(editText);
    } else {
        Callback<AppCredentials> callback = new Callback<AppCredentials>() {

            @Override
            public void onResponse(Call<AppCredentials> call, Response<AppCredentials> response) {
                if (!response.isSuccessful()) {
                    editText.setError(getString(R.string.error_failed_app_registration));
                    Log.e(TAG, "App authentication failed. " + response.message());
                    return;
                }
                AppCredentials credentials = response.body();
                clientId = credentials.clientId;
                clientSecret = credentials.clientSecret;
                preferences.edit().putString(domain + "/client_id", clientId).putString(domain + "/client_secret", clientSecret).apply();
                redirectUserToAuthorizeAndLogin(editText);
            }

            @Override
            public void onFailure(Call<AppCredentials> call, Throwable t) {
                editText.setError(getString(R.string.error_failed_app_registration));
                Log.e(TAG, Log.getStackTraceString(t));
            }
        };
        try {
            getApiFor(domain).authenticateApp(getString(R.string.app_name), getOauthRedirectUri(), OAUTH_SCOPES, getString(R.string.app_website)).enqueue(callback);
        } catch (IllegalArgumentException e) {
            editText.setError(getString(R.string.error_invalid_domain));
        }
    }
}
Also used : Response(retrofit2.Response) Call(retrofit2.Call) Callback(retrofit2.Callback) AppCredentials(com.keylesspalace.tusky.entity.AppCredentials)

Aggregations

AppCredentials (com.keylesspalace.tusky.entity.AppCredentials)1 Call (retrofit2.Call)1 Callback (retrofit2.Callback)1 Response (retrofit2.Response)1