From 0bd493dadc5006faf1584f973e4478a52146f08e Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 23 Mar 2022 20:04:05 +0100 Subject: [PATCH] Added parameters OAuth profiles --- .../main/java/eu/faircode/email/EmailProvider.java | 11 +++++++++++ .../main/java/eu/faircode/email/FragmentOAuth.java | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/EmailProvider.java b/app/src/main/java/eu/faircode/email/EmailProvider.java index 6778633920..31445dd6b3 100644 --- a/app/src/main/java/eu/faircode/email/EmailProvider.java +++ b/app/src/main/java/eu/faircode/email/EmailProvider.java @@ -60,8 +60,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Objects; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; @@ -277,6 +279,13 @@ public class EmailProvider implements Parcelable { provider.oauth.tokenEndpoint = xml.getAttributeValue(null, "tokenEndpoint"); provider.oauth.redirectUri = xml.getAttributeValue(null, "redirectUri"); provider.oauth.privacy = xml.getAttributeValue(null, "privacy"); + provider.oauth.prompt = xml.getAttributeValue(null, "prompt"); + } else if ("parameter".equals(name)) { + if (provider.oauth.parameters == null) + provider.oauth.parameters = new LinkedHashMap<>(); + provider.oauth.parameters.put( + xml.getAttributeValue(null, "key"), + xml.getAttributeValue(null, "value")); } else throw new IllegalAccessException(name); } else if (eventType == XmlPullParser.END_TAG) { @@ -1280,5 +1289,7 @@ public class EmailProvider implements Parcelable { String tokenEndpoint; String redirectUri; String privacy; + String prompt; + Map parameters; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentOAuth.java b/app/src/main/java/eu/faircode/email/FragmentOAuth.java index 76f9bf3c0a..e4a2c63af1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOAuth.java +++ b/app/src/main/java/eu/faircode/email/FragmentOAuth.java @@ -86,6 +86,7 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -363,7 +364,11 @@ public class FragmentOAuth extends FragmentBase { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putString("oauth." + provider.id, authState.jsonSerializeString()).apply(); - Map params = new HashMap<>(); + Map params = new LinkedHashMap<>(); + + if (provider.oauth.parameters != null) + for (String key : provider.oauth.parameters.keySet()) + params.put(key, provider.oauth.parameters.get(key)); if ("gmail".equals(provider.id)) params.put("access_type", "offline"); @@ -398,6 +403,9 @@ public class FragmentOAuth extends FragmentBase { if (provider.oauth.pcke) authRequestBuilder.setCodeVerifier(CodeVerifierUtil.generateRandomCodeVerifier()); + if (!TextUtils.isEmpty(provider.oauth.prompt)) + authRequestBuilder.setPrompt(provider.oauth.prompt); + // For offline access if ("gmail".equals(provider.id)) authRequestBuilder.setPrompt("consent");