Skip to content

Commit 9a5db25

Browse files
committed
Merge pull request #47 from firebase/puf-kill-switches
0.3.1
2 parents 625cc85 + 5e96d68 commit 9a5db25

Some content is hidden

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

51 files changed

+548
-560
lines changed

README.md

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ We'll go into each of these steps below.
5151

5252
### Add SDK dependencies
5353

54-
Since FirebaseUI depends on the SDKs of various providers, we'll need to include those in our depedencies as well.
54+
Since FirebaseUI depends on the SDKs of various providers, we'll need to include those in our dependencies as well.
5555

5656
```
5757
dependencies {
@@ -62,9 +62,9 @@ dependencies {
6262
}
6363
```
6464

65-
### Add Facebook/Twitter/Google keys to strings.xml
65+
### Add Facebook/Twitter/Google keys
6666

67-
Open your `res/values/strings.xml` file and add the following lines, replacing `[VALUE]` with your key.
67+
Open your application's `res/values/strings.xml` file and add the following lines, replacing `[VALUE]` with your key.
6868

6969
Keep in mind, these are all optional. You only have to provide values for the providers you plan to use.
7070

@@ -74,9 +74,10 @@ Keep in mind, these are all optional. You only have to provide values for the pr
7474
<string name="facebook_app_id">[VALUE]</string>
7575
<string name="twitter_app_key">[VALUE]</string>
7676
<string name="twitter_app_secret">[VALUE]</string>
77-
<string name="google_client_id">[VALUE]</string>
7877
```
7978

79+
If you're using Google authentication, place your `google-services.json` in the app folder.
80+
8081
### Change our AndroidManifest.xml
8182

8283
Open your `manifests/AndroidManifest.xml` file. This will allow Android to recognize the various activities that FirebaseUI exposes.
@@ -114,18 +115,6 @@ If you're using Facebook authentication, add the following to your `<application
114115
android:value="@string/facebook_app_id" />
115116
```
116117

117-
If you're using Google authentication, add the following to your `<application>` tag.
118-
119-
```xml
120-
<!-- Google Configuration -->
121-
<meta-data
122-
android:name="com.firebase.ui.GoogleClientId"
123-
android:value="@string/google_client_id" />
124-
```
125-
126-
**Note:** If you're using Google Sign-in you'll also need to ensure that your `google-services.json` file is created
127-
and placed in your app folder.
128-
129118
### Inherit from FirebaseLoginBaseActivity
130119

131120
Now we get to the juicy bits. Open your `MainActivity` and change your activity to extend `FirebaseLoginBaseActivity`
@@ -147,27 +136,34 @@ public class MainActivity extends FirebaseLoginBaseActivity {
147136
}
148137

149138
@Override
150-
public void onFirebaseLoggedIn(AuthData authData) {
151-
// TODO: Handle successful login
139+
public void onFirebaseLoginProviderError(FirebaseLoginError firebaseError) {
140+
// TODO: Handle an error from the authentication provider
152141
}
153142

154143
@Override
155-
public void onFirebaseLoggedOut() {
156-
// TODO: Handle logout
144+
public void onFirebaseLoginUserError(FirebaseLoginError firebaseError) {
145+
// TODO: Handle an error from the user
157146
}
147+
}
148+
```
149+
150+
In addition you can override these methods to customize what happens when a user logs in or out:
158151

152+
```
159153
@Override
160-
public void onFirebaseLoginProviderError(FirebaseLoginError firebaseError) {
161-
// TODO: Handle an error from the authentication provider
154+
public void onFirebaseLoggedIn(AuthData authData) {
155+
// TODO: Handle successful login
162156
}
163157
164158
@Override
165-
public void onFirebaseLoginUserError(FirebaseLoginError firebaseError) {
166-
// TODO: Handle an error from the user
159+
public void onFirebaseLoggedOut() {
160+
// TODO: Handle logout
167161
}
168-
}
162+
169163
```
170164

165+
If you want to know the current `AuthData` at any point, you can call `getAuth()`. This will return the `AuthData` for the currently authenticated user, or `null` if no user is authenticated.
166+
171167
### Enable Authentication Providers
172168

173169
Now that our activity is set up, we can enable authentication providers. The FirebaseUI login prompt will only display providers you enable here, so don't worry if you don't want to use them all!
@@ -179,15 +175,15 @@ public class MainActivity extends FirebaseLoginBaseActivity {
179175
protected void onStart() {
180176
super.onStart();
181177
// All providers are optional! Remove any you don't want.
182-
setEnabledAuthProvider(SocialProvider.facebook);
183-
setEnabledAuthProvider(SocialProvider.twitter);
184-
setEnabledAuthProvider(SocialProvider.google);
185-
setEnabledAuthProvider(SocialProvider.password);
178+
setEnabledAuthProvider(AuthProviderType.FACEBOOK);
179+
setEnabledAuthProvider(AuthProviderType.TWITTER);
180+
setEnabledAuthProvider(AuthProviderType.GOOGLE);
181+
setEnabledAuthProvider(AuthProviderType.PASSWORD);
186182
}
187183
```
188184

189185

190-
### Call showFirebaseLoginDialog();
186+
### Call showFirebaseLoginPrompt();
191187

192188
You're now ready to display the login dialog!
193189
@@ -331,7 +327,7 @@ protected void onCreate(Bundle savedInstanceState) {
331327
332328
mAdapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class, android.R.layout.two_line_list_item, ref) {
333329
@Override
334-
protected void populateView(View view, ChatMessage chatMessage) {
330+
protected void populateView(View view, ChatMessage chatMessage, int position) {
335331
((TextView)view.findViewById(android.R.id.text1)).setText(chatMessage.getName());
336332
((TextView)view.findViewById(android.R.id.text2)).setText(chatMessage.getMessage());
337333
@@ -385,7 +381,7 @@ protected void onCreate(Bundle savedInstanceState) {
385381

386382
mAdapter = new FirebaseListAdapter<ChatMessage>(this, ChatMessage.class, android.R.layout.two_line_list_item, ref) {
387383
@Override
388-
protected void populateView(View view, ChatMessage chatMessage) {
384+
protected void populateView(View view, ChatMessage chatMessage, int position) {
389385
((TextView)view.findViewById(android.R.id.text1)).setText(chatMessage.getName());
390386
((TextView)view.findViewById(android.R.id.text2)).setText(chatMessage.getMessage());
391387
}
@@ -428,7 +424,7 @@ If we use the same layout as before (`android.R.layout.two_line_list_item`), the
428424
We can wrap that in a ViewHolder with:
429425

430426
```java
431-
private static class ChatMessageViewHolder extends RecyclerView.ViewHolder {
427+
public static class ChatMessageViewHolder extends RecyclerView.ViewHolder {
432428
TextView messageText;
433429
TextView nameText;
434430

@@ -442,18 +438,18 @@ private static class ChatMessageViewHolder extends RecyclerView.ViewHolder {
442438

443439
There's nothing magical going on here; we're just mapping numeric IDs and casts into a nice, type-safe contract.
444440

445-
### Create a custom FirebaseListAdapter
441+
### Create a custom FirebaseRecyclerAdapter
446442

447-
Just like we did for FirebaseListAdapter, we'll create an anonymous subclass for our ChatMessages:
443+
Just like we did for `FirebaseListAdapter`, we'll create an anonymous subclass for our ChatMessages, but this time we'll use `FirebaseRecyclerAdapter`:
448444

449445
```java
450446
RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
451447
recycler.setHasFixedSize(true);
452448
recycler.setLayoutManager(new LinearLayoutManager(this));
453449

454-
mAdapter = new FirebaseRecyclerViewAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
450+
mAdapter = new FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
455451
@Override
456-
public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage) {
452+
public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage, int position) {
457453
chatMessageViewHolder.nameText.setText(chatMessage.getName());
458454
chatMessageViewHolder.messageText.setText(chatMessage.getMessage());
459455
}

app/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
apply plugin: 'com.android.application'
2-
apply plugin: 'com.google.gms.google-services'
32

43
android {
54
compileSdkVersion 22
@@ -23,7 +22,7 @@ android {
2322
exclude 'META-INF/NOTICE'
2423
exclude 'META-INF/NOTICE.txt'
2524
}
26-
25+
2726
}
2827

2928
dependencies {
@@ -34,4 +33,4 @@ dependencies {
3433
compile 'com.android.support:recyclerview-v7:22.2.1'
3534
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
3635
compile project(':library')
37-
}
36+
}

app/src/main/AndroidManifest.xml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
12
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
23
package="com.firebase.uidemo">
34

45
<uses-permission android:name="android.permission.INTERNET" />
56

67
<application
7-
android:allowBackup="true"
88
android:name=".DemoApplication"
9-
android:label="@string/app_name"
9+
android:allowBackup="true"
1010
android:icon="@mipmap/ic_launcher"
11-
android:theme="@style/Theme.AppCompat.Light">
12-
11+
android:label="@string/app_name"
12+
android:theme="@style/Theme.AppCompat.Light" >
1313
<activity
1414
android:name=".RecyclerViewDemoActivity"
1515
android:label="@string/app_name">
@@ -22,23 +22,24 @@
2222

2323
<!-- Twitter Configuration -->
2424
<activity android:name="com.firebase.ui.auth.twitter.TwitterPromptActivity" />
25+
2526
<meta-data
2627
android:name="com.firebase.ui.TwitterKey"
27-
android:value="@string/twitter_app_key"/>
28+
android:value="@string/twitter_app_key" />
2829
<meta-data
2930
android:name="com.firebase.ui.TwitterSecret"
30-
android:value="@string/twitter_app_secret"/>
31+
android:value="@string/twitter_app_secret" />
3132

3233
<!-- Facebook Configuration -->
3334
<activity
3435
android:name="com.facebook.FacebookActivity"
3536
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
3637
android:label="@string/app_name"
3738
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
39+
3840
<meta-data
3941
android:name="com.facebook.sdk.ApplicationId"
4042
android:value="@string/facebook_app_id" />
41-
4243
</application>
4344

4445
</manifest>

app/src/main/java/com/firebase/uidemo/RecyclerViewDemoActivity.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import com.firebase.ui.auth.core.FirebaseLoginBaseActivity;
2424
import com.firebase.ui.FirebaseRecyclerAdapter;
2525
import com.firebase.ui.auth.core.FirebaseLoginError;
26-
import com.firebase.ui.auth.core.SocialProvider;
26+
import com.firebase.ui.auth.core.AuthProviderType;
2727

2828
public class RecyclerViewDemoActivity extends FirebaseLoginBaseActivity {
2929

@@ -99,10 +99,10 @@ public void populateViewHolder(ChatHolder chatView, Chat chat, int position) {
9999
@Override
100100
protected void onStart() {
101101
super.onStart();
102-
setEnabledAuthProvider(SocialProvider.facebook);
103-
setEnabledAuthProvider(SocialProvider.twitter);
104-
setEnabledAuthProvider(SocialProvider.google);
105-
setEnabledAuthProvider(SocialProvider.password);
102+
setEnabledAuthProvider(AuthProviderType.FACEBOOK);
103+
setEnabledAuthProvider(AuthProviderType.TWITTER);
104+
setEnabledAuthProvider(AuthProviderType.GOOGLE);
105+
setEnabledAuthProvider(AuthProviderType.PASSWORD);
106106
}
107107

108108
@Override
@@ -135,6 +135,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
135135
return super.onOptionsItemSelected(item);
136136
}
137137

138+
138139
@Override
139140
public void onFirebaseLoggedIn(AuthData authData) {
140141
Log.i(TAG, "Logged in to " + authData.getProvider().toString());
@@ -162,13 +163,14 @@ public void onFirebaseLoggedOut() {
162163

163164
@Override
164165
public void onFirebaseLoginProviderError(FirebaseLoginError firebaseError) {
165-
Log.i(TAG, "Login provider error: " + firebaseError.toString());
166+
Log.e(TAG, "Login provider error: " + firebaseError.toString());
167+
resetFirebaseLoginPrompt();
166168
}
167169

168170
@Override
169171
public void onFirebaseLoginUserError(FirebaseLoginError firebaseError) {
170-
resetFirebaseLoginDialog();
171-
Log.i(TAG, "Login user error: " + firebaseError.toString());
172+
Log.e(TAG, "Login user error: "+firebaseError.toString());
173+
resetFirebaseLoginPrompt();
172174
}
173175

174176
@Override

0 commit comments

Comments
 (0)