从全名获取简短的用户名

Adr*_*ian 2 macos cocoa

任何人都知道如何获得用户的简短用户名,例如."johnsmith",全名,例如."约翰·史密斯"?

注意我对任何用户感兴趣,而不是当前用户,因此像NSUserName这样的函数是无关紧要的.

为什么?我正在使用授权服务验证用户名和密码.这允许人们输入他们的短名称或全名,这很好,但我需要知道他们实际登录的是谁(即短用户名和/或用户ID).

像[NSHomeDirectoryForUser(用户名)lastPathComponent]这样令人厌恶的黑客不能始终如一地工作.

Thi*_*tte 6

您需要使用协作框架 :).将此框架链接到您的项目,然后您只需执行以下操作:

CBIdentity* identity = [CBIdentity identityWithName:@"John Smith" authority:[CBIdentityAuthority localIdentityAuthority]];
NSLog(@"Posix name: %@", [identity posixName]);
Run Code Online (Sandbox Code Playgroud)

瞧!

编辑:如果您只需要找到绑定在网络上的用户,则需要使用+managedIdentityAuthority而不是+localIdentityAuthority.如果您需要找到本地用户和网络用户,请使用+defaultIdentityAuthority.