Android SDK

From Social ID Developers
(Difference between revisions)
Jump to: navigation, search
(Social Login)
 
(2 intermediate revisions by one user not shown)
Line 11: Line 11:
 
Configure all providers you'll support. This can be performed in your Activity's ''onCreate()'' method.
 
Configure all providers you'll support. This can be performed in your Activity's ''onCreate()'' method.
  
 +
  import com.coffeebeantech.socialidsdk.sociallogin.providers.EmailConfiguration;
 
   import com.coffeebeantech.socialidsdk.sociallogin.providers.FacebookConfiguration;
 
   import com.coffeebeantech.socialidsdk.sociallogin.providers.FacebookConfiguration;
 
   import com.coffeebeantech.socialidsdk.sociallogin.providers.GplusConfiguration;
 
   import com.coffeebeantech.socialidsdk.sociallogin.providers.GplusConfiguration;
Line 22: Line 23:
 
    
 
    
 
   // Google+ configuration
 
   // Google+ configuration
   GplusConfiguration gplusConfiguration = new GplusConfiguration();
+
   GplusConfiguration gplusConfiguration = new GplusConfiguration()
 +
    .setClientServerId(WEB_APPLICATION_CLIENT_ID);
 
    
 
    
 
   // LinkedIn configuration
 
   // LinkedIn configuration
   LinkedinConfiguration linkedinConfiguration = new LinkedinConfiguration();
+
   LinkedinConfiguration linkedinConfiguration = new LinkedinConfiguration()
 +
    .setCallbackUri(LINKEDIN_CALLBACK_URI);
 
    
 
    
 
   // Twitter configuration
 
   // Twitter configuration
Line 33: Line 36:
 
     .setTwitterSecret(TWITTER_SECRET);
 
     .setTwitterSecret(TWITTER_SECRET);
 
    
 
    
   SocialId.configLoginProviders(facebookConfiguration, gplusConfiguration, linkedinConfiguration, twitterConfiguration);
+
  // Email configuration
 +
  EmailConfiguration emailConfiguration = new EmailConfiguration();
 +
 
 +
   SocialId.configLoginProviders(facebookConfiguration, gplusConfiguration, linkedinConfiguration, twitterConfiguration, emailConfiguration);
  
 
After provider configuration, add the following code to finish the login configuration:
 
After provider configuration, add the following code to finish the login configuration:
Line 51: Line 57:
  
 
   SocialId.onActivityResult(requestCode, resultCode, data);
 
   SocialId.onActivityResult(requestCode, resultCode, data);
 +
 +
Add the following code to the end of the Activity's ''onRequestPermissionsResult()'' method:
 +
 +
  SocialId.onRequestPermissionsResult(requestCode, permissions, grantResults);
  
 
Call the following code to start the login process:
 
Call the following code to start the login process:
Line 57: Line 67:
 
   import com.coffeebeantech.socialidsdk.util.Provider;
 
   import com.coffeebeantech.socialidsdk.util.Provider;
 
    
 
    
   SocialId.initLogin(Provider.FACEBOOK); // you can change FACEBOOK to LINKEDIN, TWITTER or GPLUS
+
   SocialId.initLogin(Provider.FACEBOOK); // you can change FACEBOOK to LINKEDIN, TWITTER, GPLUS or EMAIL
 +
 
 +
For Email login, you should pass the required parameters through the EmailLoginParameters parameter:
 +
 
 +
  import com.coffeebeantech.socialidsdk.sociallogin.providers.EmailLoginParameters;
 +
 
 +
  EmailLoginParameters emailLoginParameters = new EmailLoginParameters();
 +
  emailLoginParameters.setPassword(password);
 +
  emailLoginParameters.setEmailAddress(email);
 +
 
 +
  SocialId.initLogin(Provider.EMAIL, emailLoginParameters);
  
 
Finally, create a LoginEventListenerImpl class using this example:
 
Finally, create a LoginEventListenerImpl class using this example:
Line 117: Line 137:
 
= Get the logged user =
 
= Get the logged user =
  
Use the following code to get the current logged used in cache:
+
Use the following code to get the current logged user in cache:
  
 
   import com.coffeebeantech.socialidapi.models.marketing.database.PersonProfile;
 
   import com.coffeebeantech.socialidapi.models.marketing.database.PersonProfile;
Line 165: Line 185:
 
         // onError code
 
         // onError code
 
       }
 
       }
 +
    });
 +
  }
 +
 +
= Create user with email and password =
 +
 +
You can register a user by following the example below:
 +
 +
  import com.coffeebeantech.socialidapi.models.marketing.login.User;
 +
  import com.coffeebeantech.socialidapi.models.marketing.login.UserAttributes;
 +
  import com.coffeebeantech.socialidapi.models.marketing.login.UserDataAttributes;
 +
  import com.coffeebeantech.socialidsdk.SocialId;
 +
  import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 +
  import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 +
 
 +
  // user attributes - required
 +
  UserAttributes userAttributes = new UserAttributes();
 +
  // user data attributes - optional
 +
  UserDataAttributes userDataAttributes = new UserDataAttributes();
 +
  Map<String, Object> userDataFields =  new HashMap<String, Object>();
 +
 
 +
  userAttributes.setEmailAddress(emailAddress); // or setUsername(username)
 +
  userAttributes.setPassword(password);
 +
  userDataFields.put("name", name);
 +
  userDataFields.put("birthday", birthday);
 +
  userDataAttributes.setFields(userDataFields);
 +
 
 +
  SocialId.createUser(userAttributes, userDataAttributes, new SocialIdCallback<User>() {
 +
    @Override
 +
    public void onSuccess(User user) {
 +
      // user was created and is already logged in
 +
      // PersonProfile personProfile = user.getProfile();
 +
    }
 +
 
 +
    @Override
 +
    public void onError(SocialIdException e) {
 +
      // onError code
 +
    });
 +
  }
 +
 +
You can also provide a reset password flow for users with the following code:
 +
 +
  import com.coffeebeantech.socialidapi.models.marketing.login.ResetPasswordEmailAttributes;
 +
  import com.coffeebeantech.socialidapi.util.Language;
 +
  import com.coffeebeantech.socialidsdk.SocialId;
 +
  import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 +
  import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 +
 
 +
  ResetPasswordEmailAttributes resetPasswordEmailAttributes = new ResetPasswordEmailAttributes();
 +
 
 +
  resetPasswordEmailAttributes
 +
    .setEmailAddress(emailAddress)  // or setUsername(username)
 +
    .setRedirectUrl(redirectUrl)    // required
 +
    .setSubject(subject)            // optional
 +
    .setFrom(from)                  // optional
 +
    .setDescription(description)    // optional
 +
    .setLogoUrl(logoUrl)            // optional
 +
    .setLanguage(Language.ENGLISH);  // optional
 +
 
 +
  SocialId.resetUserPassword(resetPasswordEmailAttributes, new SocialIdCallback<Void>() {
 +
    @Override
 +
    public void onSuccess(Void v) {
 +
      // onSuccess code
 +
    }
 +
 
 +
    @Override
 +
    public void onError(SocialIdException e) {
 +
      // onError code
 
     });
 
     });
 
   }
 
   }

Latest revision as of 14:15, 27 February 2019

Contents

Download and Setup the SDK

You can download and setup the SDK using our Android SDK Setup guide.

Social Login

Add the following statements to your Activity:

 import com.coffeebeantech.socialidsdk.SocialId;

Configure all providers you'll support. This can be performed in your Activity's onCreate() method.

 import com.coffeebeantech.socialidsdk.sociallogin.providers.EmailConfiguration;
 import com.coffeebeantech.socialidsdk.sociallogin.providers.FacebookConfiguration;
 import com.coffeebeantech.socialidsdk.sociallogin.providers.GplusConfiguration;
 import com.coffeebeantech.socialidsdk.sociallogin.providers.LinkedinConfiguration;
 import com.coffeebeantech.socialidsdk.sociallogin.providers.TwitterConfiguration;
 
 // Facebook configuration
 // Extra permissions are optional
 FacebookConfiguration facebookConfiguration = new FacebookConfiguration()
   .setPermissions(Arrays.asList("public_profile", "user_birthday", "email", "user_location"));
 
 // Google+ configuration
 GplusConfiguration gplusConfiguration = new GplusConfiguration()
   .setClientServerId(WEB_APPLICATION_CLIENT_ID);
 
 // LinkedIn configuration
 LinkedinConfiguration linkedinConfiguration = new LinkedinConfiguration()
   .setCallbackUri(LINKEDIN_CALLBACK_URI);
 
 // Twitter configuration
 // Key and Secret are mandatory
 TwitterConfiguration twitterConfiguration = new TwitterConfiguration()
   .setTwitterKey(TWITTER_KEY)
   .setTwitterSecret(TWITTER_SECRET);
 
 // Email configuration
 EmailConfiguration emailConfiguration = new EmailConfiguration();
 
 SocialId.configLoginProviders(facebookConfiguration, gplusConfiguration, linkedinConfiguration, twitterConfiguration, emailConfiguration);

After provider configuration, add the following code to finish the login configuration:

 SocialId.configLogin(this, new LoginEventListenerImpl(this));

If you want to pass additional configuration, such as the default user profile fields to get from the Social-ID platform, you can use the following code instead. See Social Profile Fields for the available profile fields.

 import com.coffeebeantech.socialidsdk.sociallogin.SocialLoginConfiguration;
 
 SocialLoginConfiguration socialLoginConfiguration = new SocialLoginConfiguration().
   setUserFields(Arrays.asList("display_name", "picture_url", "current_location", "verified_email", "gender"));
 
 SocialId.configLogin(this, new LoginEventListenerImpl(this), socialLoginConfiguration);

Add the following code to the end of the Activity's onActivityResult() method:

 SocialId.onActivityResult(requestCode, resultCode, data);

Add the following code to the end of the Activity's onRequestPermissionsResult() method:

 SocialId.onRequestPermissionsResult(requestCode, permissions, grantResults);

Call the following code to start the login process:

 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.util.Provider;
 
 SocialId.initLogin(Provider.FACEBOOK); // you can change FACEBOOK to LINKEDIN, TWITTER, GPLUS or EMAIL

For Email login, you should pass the required parameters through the EmailLoginParameters parameter:

 import com.coffeebeantech.socialidsdk.sociallogin.providers.EmailLoginParameters;
 
 EmailLoginParameters emailLoginParameters = new EmailLoginParameters();
 emailLoginParameters.setPassword(password);
 emailLoginParameters.setEmailAddress(email);
 
 SocialId.initLogin(Provider.EMAIL, emailLoginParameters);

Finally, create a LoginEventListenerImpl class using this example:

 import com.coffeebeantech.socialidapi.models.marketing.login.User;
 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.sociallogin.LoginEventListener;
 import com.coffeebeantech.socialidsdk.util.Provider;
 
 public class LoginEventListenerImpl implements LoginEventListener {
 
   private Activity mActivity;
 
   public LoginEventListenerImpl(Activity activity) {
     this.mActivity = activity;
   }
 
   @Override
   public void onBack() {
     // onBack code
   }
 
   @Override
   public void onCancel() {
     // onCancel code
   }
 
   @Override
   public void onComplete(Provider provider, User user) {
     // onComplete code
     // PersonProfile personProfile = user.getProfile();
   }
 
   @Override
   public void onError(SocialIdException e) {
     // onError code
     e.printStackTrace();
   }
 
   @Override
   public void onPreExecute() {
     // onPreExecute code
   }
 
   @Override
   public void onPostExecute() {
     // onPostExecute code
   }
 }

Logout

Use the following code to log out a user:

 import com.coffeebeantech.socialidsdk.SocialId;
 
 SocialId.logoutUser();

Get the logged user

Use the following code to get the current logged user in cache:

 import com.coffeebeantech.socialidapi.models.marketing.database.PersonProfile;
 import com.coffeebeantech.socialidapi.models.marketing.login.User;
 import com.coffeebeantech.socialidsdk.SocialId;
 
 User user = SocialId.getCurrentUser();
 PersonProfile personProfile = user.getProfile();
 // you can now call personProfile.getDisplayName(), personProfile.getPictureUrl() and other methods to get profile data

If you want a refreshed user from the Social Id platform, you can use the following code instead:

 import com.coffeebeantech.socialidapi.models.marketing.login.User;
 import com.coffeebeantech.socialidsdk.SocialId;
 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 
 SocialId.getCurrentUser(new SocialIdCallback<User>() {
   @Override
   public void onSuccess(User user) {
     // PersonProfile personProfile = user.getProfile();
   }
 
   @Override
   public void onError(SocialIdException e) {
     e.printStackTrace();
   }
 });

User Push Notifications

In order to send push notifications directly to a specific user, you can link his device with his account. You can make this process whenever you want after the user logs in:

 import com.coffeebeantech.socialidsdk.SocialId;
 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 
 if(SocialId.getDeviceId() != null && !SocialId.getDeviceId().isEmpty()) {
   SocialId.linkDeviceToUser(new SocialIdCallback<Void>() {
     @Override
     public void onSuccess(Void v) {
       // onSuccess code
     }
 
     @Override
     public void onError(SocialIdException e) {
       // onError code
     }
   });
 }

Create user with email and password

You can register a user by following the example below:

 import com.coffeebeantech.socialidapi.models.marketing.login.User;
 import com.coffeebeantech.socialidapi.models.marketing.login.UserAttributes;
 import com.coffeebeantech.socialidapi.models.marketing.login.UserDataAttributes;
 import com.coffeebeantech.socialidsdk.SocialId;
 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 
 // user attributes - required
 UserAttributes userAttributes = new UserAttributes();
 // user data attributes - optional
 UserDataAttributes userDataAttributes = new UserDataAttributes();
 Map<String, Object> userDataFields =  new HashMap<String, Object>();
 
 userAttributes.setEmailAddress(emailAddress); // or setUsername(username)
 userAttributes.setPassword(password);
 userDataFields.put("name", name);
 userDataFields.put("birthday", birthday);
 userDataAttributes.setFields(userDataFields);
 
 SocialId.createUser(userAttributes, userDataAttributes, new SocialIdCallback<User>() {
   @Override
   public void onSuccess(User user) {
     // user was created and is already logged in
     // PersonProfile personProfile = user.getProfile();
   }
 
   @Override
   public void onError(SocialIdException e) {
     // onError code
   });
 }

You can also provide a reset password flow for users with the following code:

 import com.coffeebeantech.socialidapi.models.marketing.login.ResetPasswordEmailAttributes;
 import com.coffeebeantech.socialidapi.util.Language;
 import com.coffeebeantech.socialidsdk.SocialId;
 import com.coffeebeantech.socialidsdk.exceptions.SocialIdException;
 import com.coffeebeantech.socialidsdk.util.SocialIdCallback;
 
 ResetPasswordEmailAttributes resetPasswordEmailAttributes = new ResetPasswordEmailAttributes();
 
 resetPasswordEmailAttributes
   .setEmailAddress(emailAddress)   // or setUsername(username)
   .setRedirectUrl(redirectUrl)     // required
   .setSubject(subject)             // optional
   .setFrom(from)                   // optional
   .setDescription(description)     // optional
   .setLogoUrl(logoUrl)             // optional
   .setLanguage(Language.ENGLISH);  // optional
 
 SocialId.resetUserPassword(resetPasswordEmailAttributes, new SocialIdCallback<Void>() {
   @Override
   public void onSuccess(Void v) {
     // onSuccess code
   }
 
   @Override
   public void onError(SocialIdException e) {
     // onError code
   });
 }
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox