如何在Android应用程序中实现SSO

时间:2015-11-17 07:09:52

标签: java android

我有两个不同的应用程序,我在后端有用户数据库,如果任何用户在一个应用程序中,他也可以登录另一个应用程序而无需登录,就像facebook一样,我如何在应用程序中实现SSO?

2 个答案:

答案 0 :(得分:0)

您可以使用Content Provider执行此操作,也可以使用Shared preferences

执行相同操作

以下是使用共享首选项的示例: 用户登录一个应用程序时调用此方法。

   public void writeSSOInfo(){
            SharedPreferences prefs = getSharedPreferences("CheckSSO",Context.MODE_WORLD_READABLE);
            SharedPreferences.Editor editor = prefs.edit();
         if(userLoggedIn){
            editor.putBoolean("isLoggedIn", true);
            }else{
           editor.putBoolean("isLoggedIn", false);
              }
            editor.commit();
        }

保存在共享内存后,您可以使用以下方法访问其他应用程序中的相同详细信息。

public void readSSOInfo(){
  Context con;
     try {
         con = createPackageContext("com.app.packagename1", 0);
         SharedPreferences pref = con.getSharedPreferences("CheckSSO", Context.MODE_PRIVATE);
         dataShared = pref.getBoolean("isLoggedIn", false);
     }
     catch (Exception e) {
         Log.e("Not data shared", e.toString());
     }
}

答案 1 :(得分:0)

我的建议是在您使用任何应用程序登录后,我会在两个应用程序之间的SharedPreferences中存储用户令牌。然后在两个应用程序的onCreate方法中获取它,如下所示:

String PACKAGE_NAME = "your.package";
String PREFERENCE_NAME = "user-token";
String USER_TOKEN = "";

try {
        myContext = createPackageContext(PACKAGE_NAME,Context.MODE_WORLD_WRITEABLE);             
        SharedPreferences sharedPrefs = myContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_WORLD_READABLE); 
        USER_TOKEN = sharedPrefs.getString(PREFERENCE_NAME, "");
        }
catch (NameNotFoundException e) {     
         e.printStackTrace();
        }

然后检查USER_TOKEN是否为空,如果不是,我会跳到下一个屏幕并继续使用相同的Auth令牌。