generated from SAP/repository-template
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
486 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
133 changes: 133 additions & 0 deletions
133
...android/app/src/main/java/com/gigyarnexample/gigya/providers/FacebookProviderWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
package com.gigyarnexample.gigya.providers; | ||
|
||
import android.content.Context; | ||
import android.content.Intent; | ||
import android.os.Bundle; | ||
|
||
import androidx.annotation.Nullable; | ||
import androidx.appcompat.app.AppCompatActivity; | ||
|
||
import com.facebook.AccessToken; | ||
import com.facebook.CallbackManager; | ||
import com.facebook.FacebookCallback; | ||
import com.facebook.FacebookException; | ||
import com.facebook.login.LoginBehavior; | ||
import com.facebook.login.LoginManager; | ||
import com.facebook.login.LoginResult; | ||
import com.gigyarnexample.R; | ||
import com.gigya.android.sdk.providers.external.IProviderWrapper; | ||
import com.gigya.android.sdk.providers.external.IProviderWrapperCallback; | ||
import com.gigya.android.sdk.providers.external.ProviderWrapper; | ||
import com.gigya.android.sdk.ui.HostActivity; | ||
|
||
import java.util.Arrays; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Set; | ||
|
||
/** | ||
* Facebook sign in wrapper class. | ||
* Add the following class to your application ../gigya.providers package. | ||
*/ | ||
public class FacebookProviderWrapper extends ProviderWrapper implements IProviderWrapper { | ||
|
||
private static final String[] DEFAULT_READ_PERMISSIONS = {"email"}; | ||
private final | ||
CallbackManager callbackManager = CallbackManager.Factory.create(); | ||
public FacebookProviderWrapper(Context context) { | ||
super(context, R.string.facebook_app_id); | ||
} | ||
|
||
@Override | ||
public void login(Context context, | ||
final Map<String, Object> params, | ||
final IProviderWrapperCallback wrapperCallback) { | ||
|
||
final List<String> readPermissions = Arrays.asList(DEFAULT_READ_PERMISSIONS); | ||
|
||
// Check login state. | ||
final AccessToken accessToken = AccessToken.getCurrentAccessToken(); | ||
boolean isLoggedIn = accessToken != null && !accessToken.isExpired() && permissionsGranted(readPermissions); | ||
if (isLoggedIn) { | ||
// Notify login success. | ||
final Map<String, Object> map = new HashMap<>(); | ||
map.put("token", accessToken.getToken()); | ||
map.put("expiration", accessToken.getExpires().getTime() / 1000); | ||
wrapperCallback.onLogin(map); | ||
return; | ||
} | ||
|
||
// Start new login flow. | ||
HostActivity.present(context, new HostActivity.HostActivityLifecycleCallbacks() { | ||
@Override | ||
public void onCreate(final AppCompatActivity activity, @Nullable Bundle savedInstanceState) { | ||
final LoginManager loginManager = LoginManager.getInstance(); | ||
// Set login behaviour. Override if provided in login parameters. | ||
LoginBehavior loginBehaviour = LoginBehavior.NATIVE_WITH_FALLBACK; | ||
if (params != null && params.containsKey("facebookLoginBehavior")) { | ||
Object behaviour = params.get("facebookLoginBehavior"); | ||
if (behaviour instanceof LoginBehavior) { | ||
loginBehaviour = (LoginBehavior) behaviour; | ||
} | ||
} | ||
loginManager.setLoginBehavior(loginBehaviour); | ||
loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { | ||
@Override | ||
public void onSuccess(LoginResult loginResult) { | ||
loginManager.unregisterCallback(callbackManager); | ||
AccessToken accessToken = AccessToken.getCurrentAccessToken(); | ||
|
||
final Map<String, Object> map = new HashMap<>(); | ||
map.put("token", accessToken.getToken()); | ||
map.put("expiration", accessToken.getExpires().getTime() / 1000); | ||
// Notify login success. Provider a map of required values. | ||
wrapperCallback.onLogin(map); | ||
activity.finish(); | ||
} | ||
|
||
@Override | ||
public void onCancel() { | ||
loginManager.unregisterCallback(callbackManager); | ||
// Notify login canceled. | ||
wrapperCallback.onCanceled(); | ||
activity.finish(); | ||
} | ||
|
||
@Override | ||
public void onError(FacebookException error) { | ||
loginManager.unregisterCallback(callbackManager); | ||
// Notify login failed. | ||
wrapperCallback.onFailed(error.getLocalizedMessage()); | ||
activity.finish(); | ||
} | ||
}); | ||
// Request login. | ||
loginManager.logInWithReadPermissions(activity, readPermissions); | ||
} | ||
|
||
@Override | ||
public void onActivityResult(AppCompatActivity activity, int requestCode, int resultCode, @Nullable Intent data) { | ||
callbackManager.onActivityResult(requestCode, resultCode, data); | ||
} | ||
}); | ||
} | ||
|
||
@Override | ||
public void logout() { | ||
if (AccessToken.getCurrentAccessToken() != null) { | ||
LoginManager.getInstance().logOut(); | ||
} | ||
} | ||
|
||
private boolean permissionsGranted(List<String> permissions) { | ||
AccessToken token = AccessToken.getCurrentAccessToken(); | ||
Set<String> grantedPermissions = token.getPermissions(); | ||
for (String permission : permissions) { | ||
if (!grantedPermissions.contains(permission)) | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
<resources> | ||
<string name="app_name">GigyaRnExample</string> | ||
<string name="facebook_app_id">113512789545198</string> | ||
<string name="facebook_client_token">26444838e49deb23e6d5fbc9a27672f2</string> | ||
<string name="facebook_app_id">APP_ID_HERE </string> | ||
<string name="fb_login_protocol_scheme">fbAPP_ID_HERE</string> | ||
<string name="facebook_client_token">CLIENT_TOKEN_HERE</string> | ||
</resources> |
Oops, something went wrong.