Skip to content

Commit 83e6a76

Browse files
authored
Version 3.2.0
2 parents 7ca207e + 2dff7df commit 83e6a76

File tree

73 files changed

+2313
-1144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2313
-1144
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,16 @@ libraries.
4646
```groovy
4747
dependencies {
4848
// FirebaseUI for Firebase Realtime Database
49-
implementation 'com.firebaseui:firebase-ui-database:3.1.3'
49+
implementation 'com.firebaseui:firebase-ui-database:3.2.0'
5050
5151
// FirebaseUI for Cloud Firestore
52-
implementation 'com.firebaseui:firebase-ui-firestore:3.1.3'
52+
implementation 'com.firebaseui:firebase-ui-firestore:3.2.0'
5353
5454
// FirebaseUI for Firebase Auth
55-
implementation 'com.firebaseui:firebase-ui-auth:3.1.3'
55+
implementation 'com.firebaseui:firebase-ui-auth:3.2.0'
5656
5757
// FirebaseUI for Cloud Storage
58-
implementation 'com.firebaseui:firebase-ui-storage:3.1.3'
58+
implementation 'com.firebaseui:firebase-ui-storage:3.2.0'
5959
}
6060
```
6161

@@ -102,6 +102,7 @@ For convenience, here are some recent examples:
102102

103103
| FirebaseUI Version | Firebase/Play Services Version |
104104
|--------------------|--------------------------------|
105+
| 3.2.0 | 11.8.0 |
105106
| 3.1.3 | 11.8.0 |
106107
| 3.1.2 | 11.6.2 |
107108
| 3.1.0 | 11.4.2 |

app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import butterknife.OnClick;
5050

5151
public class AuthUiActivity extends AppCompatActivity {
52-
private static final String UNCHANGED_CONFIG_VALUE = "CHANGE-ME";
5352
private static final String GOOGLE_TOS_URL = "https://www.google.com/policies/terms/";
5453
private static final String FIREBASE_TOS_URL = "https://firebase.google.com/terms/";
5554
private static final String GOOGLE_PRIVACY_POLICY_URL = "https://www.google.com/policies/privacy/";
@@ -120,6 +119,9 @@ public class AuthUiActivity extends AppCompatActivity {
120119
@BindView(R.id.allow_new_email_accounts)
121120
CheckBox mAllowNewEmailAccounts;
122121

122+
@BindView(R.id.require_name)
123+
CheckBox mRequireName;
124+
123125
@BindView(R.id.facebook_scopes_label)
124126
TextView mFacebookScopesLabel;
125127

@@ -204,7 +206,6 @@ public void signIn(View view) {
204206
.setPrivacyPolicyUrl(getSelectedPrivacyPolicyUrl())
205207
.setIsSmartLockEnabled(mEnableCredentialSelector.isChecked(),
206208
mEnableHintSelector.isChecked())
207-
.setAllowNewEmailAccounts(mAllowNewEmailAccounts.isChecked())
208209
.build(),
209210
RC_SIGN_IN);
210211
}
@@ -328,29 +329,28 @@ private List<IdpConfig> getSelectedProviders() {
328329

329330
if (mUseGoogleProvider.isChecked()) {
330331
selectedProviders.add(
331-
new IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER)
332-
.setPermissions(getGooglePermissions())
333-
.build());
332+
new IdpConfig.GoogleBuilder().setScopes(getGoogleScopes()).build());
334333
}
335334

336335
if (mUseFacebookProvider.isChecked()) {
337-
selectedProviders.add(
338-
new IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER)
339-
.setPermissions(getFacebookPermissions())
340-
.build());
336+
selectedProviders.add(new IdpConfig.FacebookBuilder()
337+
.setPermissions(getFacebookPermissions())
338+
.build());
341339
}
342340

343341
if (mUseTwitterProvider.isChecked()) {
344-
selectedProviders.add(new IdpConfig.Builder(AuthUI.TWITTER_PROVIDER).build());
342+
selectedProviders.add(new IdpConfig.TwitterBuilder().build());
345343
}
346344

347345
if (mUseEmailProvider.isChecked()) {
348-
selectedProviders.add(new IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build());
346+
selectedProviders.add(new IdpConfig.EmailBuilder()
347+
.setRequireName(mRequireName.isChecked())
348+
.setAllowNewAccounts(mAllowNewEmailAccounts.isChecked())
349+
.build());
349350
}
350351

351352
if (mUsePhoneProvider.isChecked()) {
352-
selectedProviders.add(
353-
new IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build());
353+
selectedProviders.add(new IdpConfig.PhoneBuilder().build());
354354
}
355355

356356
return selectedProviders;
@@ -376,12 +376,12 @@ private String getSelectedPrivacyPolicyUrl() {
376376

377377
@MainThread
378378
private boolean isGoogleMisconfigured() {
379-
return UNCHANGED_CONFIG_VALUE.equals(getString(R.string.default_web_client_id));
379+
return AuthUI.UNCONFIGURED_CONFIG_VALUE.equals(getString(R.string.default_web_client_id));
380380
}
381381

382382
@MainThread
383383
private boolean isFacebookMisconfigured() {
384-
return UNCHANGED_CONFIG_VALUE.equals(getString(R.string.facebook_application_id));
384+
return AuthUI.UNCONFIGURED_CONFIG_VALUE.equals(getString(R.string.facebook_application_id));
385385
}
386386

387387
@MainThread
@@ -391,7 +391,7 @@ private boolean isTwitterMisconfigured() {
391391
getString(R.string.twitter_consumer_secret)
392392
);
393393

394-
return twitterConfigs.contains(UNCHANGED_CONFIG_VALUE);
394+
return twitterConfigs.contains(AuthUI.UNCONFIGURED_CONFIG_VALUE);
395395
}
396396

397397
@MainThread
@@ -412,7 +412,7 @@ private List<String> getFacebookPermissions() {
412412
}
413413

414414
@MainThread
415-
private List<String> getGooglePermissions() {
415+
private List<String> getGoogleScopes() {
416416
List<String> result = new ArrayList<>();
417417
if (mGoogleScopeYoutubeData.isChecked()) {
418418
result.add("https://www.googleapis.com/auth/youtube.readonly");

app/src/main/res/layout/auth_ui_layout.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,13 @@
284284
android:checked="true"
285285
android:text="@string/allow_new_email_acccount" />
286286

287+
<CheckBox
288+
android:id="@+id/require_name"
289+
android:layout_width="wrap_content"
290+
android:layout_height="wrap_content"
291+
android:checked="true"
292+
android:text="@string/require_name" />
293+
287294
</LinearLayout>
288295

289296
</ScrollView>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<string name="enable_credential_selector">Enable Smart Lock\'s credential selector</string>
6060
<string name="enable_hint_selector">Enable Smart Lock\'s hint selector</string>
6161
<string name="allow_new_email_acccount">Allow account creation if email does not exist.</string>
62+
<string name="require_name">Require first/last name with email accounts.</string>
6263

6364
<string name="unknown_response">Unexpected onActivityResult response code</string>
6465
<string name="unknown_sign_in_response">Unknown response from AuthUI sign-in</string>

auth/README.md

Lines changed: 53 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Gradle, add the dependency:
6262
```groovy
6363
dependencies {
6464
// ...
65-
implementation 'com.firebaseui:firebase-ui-auth:3.1.3'
65+
implementation 'com.firebaseui:firebase-ui-auth:3.2.0'
6666
6767
// Required only if Facebook login support is required
6868
// Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94
@@ -216,16 +216,16 @@ You can enable sign-in providers like Google Sign-In or Facebook Log In by calli
216216

217217
```java
218218
startActivityForResult(
219-
AuthUI.getInstance()
220-
.createSignInIntentBuilder()
221-
.setAvailableProviders(
222-
Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
223-
                             new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
224-
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
225-
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build(),
226-
new AuthUI.IdpConfig.Builder(AuthUI.TWITTER_PROVIDER).build()))
227-
.build(),
228-
RC_SIGN_IN);
219+
AuthUI.getInstance()
220+
.createSignInIntentBuilder()
221+
.setAvailableProviders(Arrays.asList(
222+
new AuthUI.IdpConfig.EmailBuilder().build(),
223+
new AuthUI.IdpConfig.PhoneBuilder().build(),
224+
new AuthUI.IdpConfig.GoogleBuilder().build(),
225+
new AuthUI.IdpConfig.FacebookBuilder().build(),
226+
new AuthUI.IdpConfig.TwitterBuilder().build()))
227+
.build(),
228+
RC_SIGN_IN);
229229
```
230230

231231
##### Adding a ToS and privacy policy
@@ -260,28 +260,30 @@ startActivityForResult(
260260
RC_SIGN_IN);
261261
```
262262

263-
It is often desirable to disable Smart Lock in development but enable it in production. To achieve
264-
this, you can use the `BuildConfig.DEBUG` flag to control Smart Lock:
263+
###### Smart Lock hints
264+
265+
If you'd like to keep Smart Lock's "hints" but disable the saving/retrieving of credentials, then
266+
you can use the two-argument version of `setIsSmartLockEnabled`:
265267

266268
```java
267269
startActivityForResult(
268270
AuthUI.getInstance()
269271
.createSignInIntentBuilder()
270-
.setIsSmartLockEnabled(!BuildConfig.DEBUG)
272+
.setIsSmartLockEnabled(false, true)
271273
.build(),
272274
RC_SIGN_IN);
273275
```
274276

275-
###### Smart Lock hints
277+
###### Smart Lock in dev builds
276278

277-
If you'd like to keep Smart Lock's "hints" but disable the saving/retrieving of credentials, then
278-
you can use the two-argument version of `setIsSmartLockEnabled`:
279+
It is often desirable to disable Smart Lock in development but enable it in production. To achieve
280+
this, you can use the `BuildConfig.DEBUG` flag to control Smart Lock:
279281

280282
```java
281283
startActivityForResult(
282284
AuthUI.getInstance()
283285
.createSignInIntentBuilder()
284-
.setIsSmartLockEnabled(false, true)
286+
.setIsSmartLockEnabled(!BuildConfig.DEBUG /* credentials */, true /* hints */)
285287
.build(),
286288
RC_SIGN_IN);
287289
```
@@ -293,27 +295,27 @@ provide a default phone number (in international format) that will be used to pr
293295
country code and phone number input fields. The user is still able to edit the number if desired.
294296

295297
```java
296-
// Use a Bundle to hold the default number, and pass it to the Builder via setParams:
297-
Bundle params = new Bundle();
298-
params.putString(AuthUI.EXTRA_DEFAULT_PHONE_NUMBER, "+123456789");
299-
IdpConfig phoneConfigWithDefaultNumber =
300-
new IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER)
301-
.setParams(params)
302-
.build();
298+
IdpConfig phoneConfigWithDefaultNumber = new IdpConfig.PhoneBuilder()
299+
.setDefaultNumber("+123456789")
300+
.build();
301+
```
302+
303+
Alternatively, you can set only the default phone number country.
304+
305+
```java
306+
IdpConfig phoneConfigWithDefaultNumber = new IdpConfig.PhoneBuilder()
307+
.setDefaultCountryIso("ca")
308+
.build();
303309
```
304310

305311
It is also possible to set a default country code along with a national number if a specific country
306312
is your app's target audience. This will take precedence over the full default phone number if both
307313
are provided.
308314

309315
```java
310-
Bundle params = new Bundle();
311-
params.putString(AuthUI.EXTRA_DEFAULT_COUNTRY_CODE, "ca");
312-
params.putString(AuthUI.EXTRA_DEFAULT_NATIONAL_NUMBER, "23456789");
313-
IdpConfig phoneConfigWithDefaultCountryAndNationalNumber =
314-
new IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER)
315-
.setParams(params)
316-
.build();
316+
IdpConfig phoneConfigWithDefaultNumber = new IdpConfig.PhoneBuilder()
317+
.setDefaultNumber("ca", "23456789")
318+
.build();
317319
```
318320

319321
### Handling the sign-in response
@@ -561,50 +563,46 @@ at a diff of the `strings.xml` file before updating FirebaseUI.
561563

562564
### Google
563565
By default, FirebaseUI requests the `email` and `profile` scopes when using Google Sign-In. If you
564-
would like to request additional scopes from the user, call `setPermissions` on the
565-
`AuthUI.IdpConfig.Builder` when initializing FirebaseUI.
566+
would like to request additional scopes from the user, call `setScopes` on the
567+
`AuthUI.IdpConfig.GoogleBuilder` when initializing FirebaseUI.
566568

567569

568570
```java
569571
// For a list of all scopes, see:
570572
// https://developers.google.com/identity/protocols/googlescopes
571-
AuthUI.IdpConfig googleIdp = new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER)
572-
.setPermissions(Arrays.asList(Scopes.GAMES))
573-
.build();
573+
AuthUI.IdpConfig googleIdp = new AuthUI.IdpConfig.GoogleBuilder()
574+
.setScopes(Arrays.asList(Scopes.GAMES))
575+
.build();
574576

575577
startActivityForResult(
576-
AuthUI.getInstance()
577-
.createSignInIntentBuilder()
578-
.setAvailableProviders(Arrays.asList(new IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
579-
googleIdp,
580-
new IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()))
581-
.build(),
582-
RC_SIGN_IN);
578+
AuthUI.getInstance()
579+
.createSignInIntentBuilder()
580+
.setAvailableProviders(Arrays.asList(googleIdp, ...))
581+
.build(),
582+
RC_SIGN_IN);
583583
```
584584

585585

586586
### Facebook
587587

588588
By default, FirebaseUI requests the `email` and `public_profile` permissions when initiating
589589
Facebook Login. If you would like to request additional permissions from the user, call
590-
`setPermissions` on the `AuthUI.IdpConfig.Builder` when initializing FirebaseUI.
590+
`setPermissions` on the `AuthUI.IdpConfig.FacebookBuilder` when initializing FirebaseUI.
591591

592592
```java
593593
// For a list of permissions see:
594-
// https://developers.facebook.com/docs/facebook-login/android
595594
// https://developers.facebook.com/docs/facebook-login/permissions
596595

597-
AuthUI.IdpConfig facebookIdp = new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER)
598-
.setPermissions(Arrays.asList("user_friends"))
599-
.build();
596+
AuthUI.IdpConfig facebookIdp = new AuthUI.IdpConfig.FacebookBuilder()
597+
.setPermissions(Arrays.asList("user_friends"))
598+
.build();
600599

601600
startActivityForResult(
602-
AuthUI.getInstance()
603-
.createSignInIntentBuilder()
604-
.setAvailableProviders(Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
605-
facebookIdp))
606-
.build(),
607-
RC_SIGN_IN);
601+
AuthUI.getInstance()
602+
.createSignInIntentBuilder()
603+
.setAvailableProviders(Arrays.asList(facebookIdp, ...))
604+
.build(),
605+
RC_SIGN_IN);
608606
```
609607

610608
### Twitter

auth/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ android {
3636
dependencies {
3737
implementation "com.android.support:design:$supportLibraryVersion"
3838
implementation "com.android.support:customtabs:$supportLibraryVersion"
39-
implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta4'
39+
implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta3'
4040

4141
implementation "android.arch.lifecycle:extensions:$architectureVersion"
4242
annotationProcessor "android.arch.lifecycle:compiler:$architectureVersion"
@@ -57,7 +57,7 @@ dependencies {
5757
testImplementation 'com.facebook.android:facebook-login:4.29.0'
5858
testImplementation("com.twitter.sdk.android:twitter-core:3.1.1@aar") { transitive = true }
5959

60-
lintChecks project(':lint')
60+
implementation project(':internal:lintchecks')
6161
}
6262

6363
javadoc.include([

auth/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@
7474
</intent-filter>
7575
</activity>
7676

77+
<provider
78+
android:name=".data.client.AuthUiInitProvider"
79+
android:authorities="${applicationId}.authuiinitprovider"
80+
android:exported="false"
81+
android:initOrder="90" />
82+
7783
</application>
7884

7985
</manifest>

0 commit comments

Comments
 (0)