diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java index b9adb0f9c..f0266c628 100644 --- a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java +++ b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java @@ -49,7 +49,7 @@ import java.util.ArrayList; import java.util.List; -public class FacebookProvider implements IdpProvider, FacebookCallback { +public class FacebookProvider implements IdpProvider { private static final String TAG = "FacebookProvider"; private static final String EMAIL = "email"; private static final String PUBLIC_PROFILE = "public_profile"; @@ -60,7 +60,7 @@ public class FacebookProvider implements IdpProvider, FacebookCallback scopes = idpConfig.getParams() .getStringArrayList(ExtraConstants.EXTRA_FACEBOOK_PERMISSIONS); if (scopes == null) { @@ -93,7 +93,7 @@ public int getButtonLayout() { public void startLogin(Activity activity) { sCallbackManager = CallbackManager.Factory.create(); LoginManager loginManager = LoginManager.getInstance(); - loginManager.registerCallback(sCallbackManager, this); + loginManager.registerCallback(sCallbackManager, callback); List permissionsList = new ArrayList<>(mScopes); @@ -122,62 +122,64 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { } } - @Override - public void onSuccess(final LoginResult loginResult) { - GraphRequest request = GraphRequest.newMeRequest( - loginResult.getAccessToken(), - new GraphRequest.GraphJSONObjectCallback() { - @Override - public void onCompleted(JSONObject object, GraphResponse response) { - FacebookRequestError requestError = response.getError(); - if (requestError != null) { - Log.e(TAG, "Received Facebook error: " + requestError.getErrorMessage()); - onFailure(requestError.getException()); - return; - } - if (object == null) { - Log.w(TAG, "Received null response from Facebook GraphRequest"); - onFailure(new FirebaseUiException(ErrorCodes.UNKNOWN_ERROR)); - } else { - String email = null; - String name = null; - Uri photoUri = null; - - try { - email = object.getString("email"); - } catch (JSONException e) { - Log.e(TAG, "Failure retrieving Facebook email", e); + private final FacebookCallback callback = new FacebookCallback(){ + @Override + public void onSuccess(final LoginResult loginResult) { + GraphRequest request = GraphRequest.newMeRequest( + loginResult.getAccessToken(), + new GraphRequest.GraphJSONObjectCallback() { + @Override + public void onCompleted(JSONObject object, GraphResponse response) { + FacebookRequestError requestError = response.getError(); + if (requestError != null) { + Log.e(TAG, "Received Facebook error: " + requestError.getErrorMessage()); + onFailure(requestError.getException()); + return; + } + if (object == null) { + Log.w(TAG, "Received null response from Facebook GraphRequest"); + onFailure(new FirebaseUiException(ErrorCodes.UNKNOWN_ERROR)); + } else { + String email = null; + String name = null; + Uri photoUri = null; + + try { + email = object.getString("email"); + } catch (JSONException e) { + Log.e(TAG, "Failure retrieving Facebook email", e); + } + try { + name = object.getString("name"); + } catch (JSONException ignored) {} + try { + photoUri = Uri.parse(object.getJSONObject("picture") + .getJSONObject("data") + .getString("url")); + } catch (JSONException ignored) {} + + FacebookProvider.this.onSuccess(loginResult, email, name, photoUri); } - try { - name = object.getString("name"); - } catch (JSONException ignored) {} - try { - photoUri = Uri.parse(object.getJSONObject("picture") - .getJSONObject("data") - .getString("url")); - } catch (JSONException ignored) {} - - onSuccess(loginResult, email, name, photoUri); } - } - }); + }); - Bundle parameters = new Bundle(); - parameters.putString("fields", "id,name,email,picture"); - request.setParameters(parameters); - request.executeAsync(); - } + Bundle parameters = new Bundle(); + parameters.putString("fields", "id,name,email,picture"); + request.setParameters(parameters); + request.executeAsync(); + } - @Override - public void onCancel() { - onFailure(new FirebaseUiException(ErrorCodes.UNKNOWN_ERROR)); - } + @Override + public void onCancel() { + onFailure(new FirebaseUiException(ErrorCodes.UNKNOWN_ERROR)); + } - @Override - public void onError(FacebookException e) { - Log.e(TAG, "Error logging in with Facebook. " + e.getMessage()); - onFailure(e); - } + @Override + public void onError(FacebookException e) { + Log.e(TAG, "Error logging in with Facebook. " + e.getMessage()); + onFailure(e); + } + }; private void onSuccess(LoginResult loginResult, @Nullable String email, diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java index 2d3ec8188..46958c4e8 100644 --- a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java +++ b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java @@ -22,7 +22,7 @@ import com.twitter.sdk.android.core.identity.TwitterAuthClient; import com.twitter.sdk.android.core.models.User; -public class TwitterProvider extends Callback implements IdpProvider { +public class TwitterProvider implements IdpProvider { private static final String TAG = "TwitterProvider"; private IdpCallback mCallbackObject; @@ -87,38 +87,42 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { @Override public void startLogin(Activity activity) { - mTwitterAuthClient.authorize(activity, this); + mTwitterAuthClient.authorize(activity, callback); } - @Override - public void success(final Result sessionResult) { - TwitterCore.getInstance() - .getApiClient() - .getAccountService() - .verifyCredentials(false, false, true) - .enqueue(new Callback() { - @Override - public void success(Result result) { - User user = result.data; - mCallbackObject.onSuccess(createIdpResponse( - sessionResult.data, - user.email, - user.name, - Uri.parse(user.profileImageUrlHttps))); - } - - @Override - public void failure(TwitterException e) { - mCallbackObject.onFailure(e); - } - }); - } + private final Callback callback = new Callback(){ + @Override + public void success(final Result sessionResult) { + TwitterCore.getInstance() + .getApiClient() + .getAccountService() + .verifyCredentials(false, false, true) + .enqueue(new Callback() { + @Override + public void success(Result result) { + User user = result.data; + mCallbackObject.onSuccess(createIdpResponse( + sessionResult.data, + user.email, + user.name, + Uri.parse(user.profileImageUrlHttps))); + } + + @Override + public void failure(TwitterException e) { + mCallbackObject.onFailure(e); + } + }); + } + + @Override + public void failure(TwitterException e) { + Log.e(TAG, "Failure logging in to Twitter. " + e.getMessage()); + mCallbackObject.onFailure(e); + } + }; + - @Override - public void failure(TwitterException e) { - Log.e(TAG, "Failure logging in to Twitter. " + e.getMessage()); - mCallbackObject.onFailure(e); - } private IdpResponse createIdpResponse(TwitterSession session, String email,