在Startactivity中获取已注册用户的UserID

2020-09-07 16:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我使用向导在我的应用程序中包含了SAML的入门功能,并且运行良好。

现在,我需要在活动中了解userId,以获取有关入职用户的一些信息。 应用程序中有一个" IsOnboarded"变量,但我找不到userId变量:

 val isOnBoarded =(应用程序为SAPWizardApplication).isOnboarded 

在混合世界中,我可以使用kapsel"设置"插件获取userId。

在此处获取此信息的最佳方法是什么?

最好的问候和预先的感谢,

克里斯

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我使用向导在我的应用程序中包含了SAML的入门功能,并且运行良好。

现在,我需要在活动中了解userId,以获取有关入职用户的一些信息。 应用程序中有一个" IsOnboarded"变量,但我找不到userId变量:

 val isOnBoarded =(应用程序为SAPWizardApplication).isOnboarded 

在混合世界中,我可以使用kapsel"设置"插件获取userId。

在此处获取此信息的最佳方法是什么?

最好的问候和预先的感谢,

克里斯

付费偷看设置
发送
3条回答
hengyuye
1楼 · 2020-09-07 17:14.采纳回答

另请参见

https://help.sap.com/doc/c2d571df73104f72b9f1b73e06c5609a/Latest/en-US/docs/user-guide/foundation/userinfo.html

https://blogs.sap.com/2018/10/15/step-by-step-with-the-sap-cloud-platform-sdk-for-android-part-3-authentication/

我在由SAP向导创建的SAML应用中尝试了此操作,并将以下代码添加到LogonActivity.java方法中。

私有无效startEntitySetListActivity(){
     sapServiceManager.openODataStore(()-> {
       getUser();
 ...
 }

 私人无效getUser(){
    字符串myTag =" userNameTest";
    Log.d(myTag,"在getUser中");
    SAPWizardApplication sapWizardApplication =(SAPWizardApplication)getApplication();
    SettingsParameters settingsParameters = sapWizardApplication.getSettingsParameters();
    UserRoles角色=新的UserRoles(ClientProvider.get(),settingsParameters);
    UserRoles.CallbackListener callbackListener = new UserRoles.CallbackListener(){
       @Override
       public void onSuccess(@NonNull UserInfo ui){
          Log.d(myTag,"用户名:" + ui.getUserName());
          Log.d(myTag,"用户ID:" + ui.getId());
          String [] roleList = ui.getRoles();
          Log.d(myTag,"用户具有以下角色");
          for(int i = 0; i  

希望有帮助,

Dan van Leeuwen

huskylover
2楼-- · 2020-09-07 17:27

用户信息

作为应用程序开发人员,您可以使用UserRoles API检索用户名,用户ID和与用户关联的角色。 SAP Cloud Platform移动服务允许管理员向用户分配各种角色,这些角色可用于基于角色为移动应用程序构建灵活的UI。

UserRoles.load从Mobile Services获取有关当前用户的信息,包括用户名,用户ID和当前用户的角色。 用户标识和用户名始终可用。 仅当在移动服务主控室中启用访问控制时,角色才可用。 必须从UI线程调用此方法。 回调方法是在UI线程上调用的。

'SettingsParameters'类提供有关服务器URL和应用程序ID的所有必要信息。 与驾驶舱中的应用程序安全配置相关联的身份验证提供程序机制为检索其用户信息的用户提供了上下文。

样品用量

以下示例代码显示了如何使用此API。

SettingsParameters settingsParameters = newSettingsParameters(hostUrl,APP_ID," deviceId"," 1.0");

UserRoles role = newUserRoles(okHttpClient,settingsParameters);

roles.load(newUserRoles.CallbackListener(){

@Override

publicvoidonSuccess(UserInfoo){

/*

这里是处理成功响应的代码。

UserInfo包含用户ID,用户名和用户角色

UserInfo是可包裹的对象,因此,如果您愿意,可以

通过捆绑销售商品传递给不同的活动

*/

Log.i("用户名",o.getUserName());

Log.i("用户ID",o.getId());

String [] role = o.getRoles();

Log.i(" UserInfo:","用户具有以下角色");

for(inti = 0; i

Log.i("角色名称",角色[i]);

}

}

@Override

publicvoidonError(Throwableresult){

//在这里处理错误...

if(resultinstanceofHttpException){

//HttpException类型com.sap.cloud.mobile.foundation.networking.HttpException

HttpException ne =(HttpException)结果;

Log.e(" Http Exception:",ne.message()+",错误代码:" + ne.code());

}其他{

Log.e("发生异常:",result.getMessage());

}

}

}

);

valsettingsParameters =设置参数(hostUrl,APP_ID," deviceId"," 1.0")

valroles = UserRoles(okHttpClient,settingsParameters)

roles.load(object:UserRoles.CallbackListener {

覆盖onSuccess(o:UserInfo){

/*

此处包含用于处理成功响应的代码。

UserInfo包含用户ID,用户名和用户角色

UserInfoisa可打包对象,可以实现此目的

通过捆绑销售商品传递给不同的活动

*/

Log.i("用户名",o.userName)

Log.i("用户ID",o.id)

valroles = o.roles

Log.i(" UserInfo:","用户具有以下角色")

for(iinroles.indices){

Log.i("角色名称",角色[i])

}

}

overridefunonError(结果:可抛出){

//在这里处理错误...

if(resultisHttpException){

//HttpException类型com.sap.cloud.mobile.foundation.networking.HttpException

Log.e(" Http Exception:",result.message()+",错误代码:" + result.code())

}其他{

Log.e("发生异常:",result.message)

}

}

})

Nan4612
3楼-- · 2020-09-07 17:10

谢谢你们。

我把Dans的代码偷偷给了Kotllin,但发现了它。 奇怪的是,我没有任何角色(我的用户有多个角色)。 但是现在我知道userId就足够了。

感谢您的帮助。

最好的问候

克里斯

一周热门 更多>