我有一个使用最新 Salesforce iOS SDK 的 iOS 应用程序。它使用 Salesforce 站点上的 oAuth2.0 通过 web 视图对用户进行身份验证,因此我不会在我的应用程序中捕获用户名。有没有一种方法可以让我以某种方式使用 API 或会话信息查询用户名?我只是希望能够显示用户名,以便用户知道他们登录了哪个帐户(如果他们有多个)谢谢,约瑟夫
5 回答
当前用户的用户名存储在 SFIdentityData 对象中
#import "SFIdentityData.h"
NSString *userName = [SFAccountManager sharedInstance].idData.username;
我不知道你是使用 REST 还是 SOAP API ......
对于REST ,metadaddy有一篇出色的文章:http : //wiki.developerforce.com/page/Digging_Deeper_into_OAuth_2.0_at_Salesforce.com#The_Force.com_Identity_Service
身份服务链接的格式为/id/(organization id)/(user id)
,请在此博客文章中向上滚动一下,以了解您应该期待它的时间。
SOAP API,提供getUserInfo()
方法(它返回一个类似于 ApexUserInfo
类的对象)。只需单击此处的第一个链接即可查看您可以调用的方法的完整列表。
斯威夫特
要使用 Salesforce Mobile SDK 4 在 UILabel 和 UIImageView 中显示登录用户的全名和聊天资料图片,您需要首先创建 @IBOutlets
@IBOutlet weak var yourtextLabel: UILabel!
@IBOutlet weak var profileImage: UIImageView!
然后,您只需要 viewDidLoad() 中的以下内容
yourtextLabel.text = SFAuthenticationManager.sharedManager().idCoordinator.idData.displayName
let imageURL = SFAuthenticationManager.sharedManager().idCoordinator.idData.pictureUrl
let image = UIImage(data: NSData(contentsOfURL: imageURL!)!)
profileImage.image = image
您需要导入SFAuthenticationManager .h 类
#import <SalesforceSDKCore/SFAuthenticationManager.h>
然后您可以通过这种方式获取用户详细信息(名字、姓氏、电子邮件等)
NSLog(@"userData= %@",[SFAuthenticationManager sharedManager].idCoordinator.idData);
NSLog(@"first name = %@",[SFAuthenticationManager sharedManager].idCoordinator.idData.firstName);
NSLog(@"last name = %@",[SFAuthenticationManager sharedManager].idCoordinator.idData.lastName);
NSLog(@"email name = %@",[SFAuthenticationManager sharedManager].idCoordinator.idData.email);
SalesforceMobileSDK-iOS 7.0
斯威夫特版本
import SalesforceSDKCore
guard let userId = UserAccountManager.shared.currentUserAccountIdentity?.userId else {return}
取决于您的需要,这可能也有帮助:
guard let userId = UserAccountManager.shared.currentUserAccount?.idData?.userId else {return}