我正在尝试使用以下内容显示登录用户的个人资料图片:
NSLog(@"url is : %@",[SFAccountManager sharedInstance].idData.pictureUrl);
profilePicData=[NSData dataWithContentsOfURL:[SFAccountManager sharedInstance].idData.pictureUrl];
if ( profilePicData )
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.jpg"];
NSLog(@"pic path: %@",filePath);
[profilePicData writeToFile:filePath atomically:YES];
}
NSLog(@"pic data: %@",profilePicData);
}
NSLog中的(“%@”,[NSData dataWithContentsOfURL:[SFAccountManager sharedInstance] .idData.pictureUrl]);显示一些数据,但不显示UIImageView中的图片。
任何帮助都将不胜感激。
答案 0 :(得分:2)
我试图在Chatter API中做同样的事情 - 我想在" smallPhotoUrl"下的Feed数据中加载图片。我发现的是,在URL结束时必须添加活动令牌。
这个消息来源向我介绍了概念:Accessing Chatter user pics
我终于能够在这里找到一些关于如何访问该令牌的明确信息:salesforce_platform_mobile_services.pdf第262页
所以最终我做到了这一点:
NSString *builtImageUrlWithToken = [NSString stringWithFormat:@"%@?oauth_token=%@",
phototoUrl, [SFAccountManager sharedInstance].credentials.accessToken];
NSURL *imageURL = [NSURL URLWithString:builtImageUrlWithToken];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
我认为这与此主题相关,正如我在寻找这个特定解决方案时遇到的那样。我相信它对其他人也有用。
谢谢!
答案 1 :(得分:1)
首先,Apple文档说不使用dataWithContentsOfURL进行网络调用,因为它是同步的。
所以,你可以做这样的事情来取得图像:
SFIdentityData *idData = [SFAccountManager sharedInstance].idData;
if(idData != nil) {
SFRestRequest *request = [[SFRestRequest alloc] init];
request.endpoint = [idData.pictureUrl absoluteString];
request.method = SFRestMethodGET;
request.path = @"";
[[SFRestAPI sharedInstance] send:request delegate:_delegate];
}
(这是异步的。您可以使用块而不是委托。)
在您的委托中,您可以(例如)将图像存储在CoreData中,或者将NSData分配给UIImage:
[[UIImage alloc] initWithData:picData];
您还需要确保您的UIImage已正确连线,例如一种方法是通过一个IBOutlet的UIImageView。
答案 2 :(得分:0)
调用salesforce Rest API并获取用户信息。
NSString *path=@"/services/data/v29.0/chatter/users/me";
SFRestMethod method=0;
SFRestRequest *request = [SFRestRequest requestWithMethod:method path:path queryParams:queryParams];
[[SFRestAPI sharedInstance] send:request delegate:self];
这将返回json响应。 - (void)请求:(SFRestRequest *)请求didLoadResponse:(id)dataResponse {...。}
从中解析所需的照片词典并使用fullEmailPhotoUrl加载/保存图像。 使用largePhotoUrl和largePhotoUrl没有为我加载图片。 例如。解析照片词典:
photo = {
fullEmailPhotoUrl =“https://na14.salesforce.com/ncsphoto/< SOMEIDENTIFIERS
>”;
largePhotoUrl =“https://c.na14.content.force.com/profilephoto/< SOMEIDENTIFIERS
> / F”;
photoVersionId =< PHOTOID
>;
smallPhotoUrl =“https://c.na14.content.force.com/profilephoto/< SOMEIDENTIFIERS
> / T”;
standardEmailPhotoUrl =“https://na14.salesforce.com/ncsphoto/< SOMEIDENTIFIERS
>”;
url =“/services/data/v29.0/chatter/users/< SOMEIDENTIFIERS
&gt; / photo”;
};
答案 3 :(得分:0)
在swift 3中,使用Alamofire:
uglify: {
app: {
options: { // <-- Specific options for `app` target
mangle: false,
sourceMap: true,
sourceMapIn: './build/my_map.map' // <-- 3. Define .map file to use.
},
files: {
'public/js/app.min.js': ['build/_tsbc.js']
}
},
bower: {
options: { // <-- Specific options for `bower` target
mangle: false,
sourceMap: true
// <-- There's no `sourceMapIn` needed here.
},
files: {
'public/js/lib.min.js': ['build/_bower.js']
}
}
},