私はセールスフォース添付アプリに取り組んでいます。このアプリは、リード、連絡先、商談、ケース、キャンペーンなどの特定のオブジェクトの添付リストを表示します。
画像、動画、音声などの添付ファイルをアプリから Salesforce アカウントに正常にアップロードし、Salesforce から blob 形式でダウンロードして、添付ファイルに正常に表示しました。
このために、「セールスフォース アタッチメント」という名前のセールスフォース アカウントにアプリケーションを作成し、コンシューマ キー、コールバック URL、クライアント シークレットを正常に生成しました。
次に、このコンシューマー キーとコールバック URL を iOS アプリにリンクすると、正常にログインできます。
添付ファイル BLOB にアクセスするには、まずアクセス トークンが必要でした。
アクセス トークンを取得するには、OAuth 2.0 トークン フローを使用しました。これで、grant_type=password、client_id=consumerKey、username=username、password=password、Redirect_uri=callbackUrl というパラメーターを渡しました。
このパラメーターを渡すことで、アクセス トークンを正常に生成できました。
Salesforce から添付ファイル データを取得する必要があるときは常に、このトークンを使用しています。
ここでの問題は、Salesforce アプリが作成された「Salesforce Attachment」アカウントで iOS アプリにログインすると、アプリが正常に動作することです。
しかし、iOS アプリで別の Salesforce アカウントを使用してログインすると、添付ファイル リストは取得されますが、添付ファイル Blob は取得されません。
次のエラーが表示されます。
{ "message" : "The requested resource does not exist", "errorCode" : "NOT_FOUND" }.
添付ファイルのブロブを取得するための私のコードは次のとおりです。
NSString *blobPost = [NSString stringWithFormat:@"OAuth %@",access_token];
NSString *urlString=[NSString stringWithFormat:@"%@%@/Body",instance_url,attachmentUrl];
NSURL *blobUrl=[NSURL URLWithString:urlString];
[blobRequest setURL:blobUrl];
[blobRequest setHTTPMethod:@"GET"];
blobRequest setValue:blobPost forHTTPHeaderField:@"Authorization"];
[blobRequest setValue:@"application/pdf" forHTTPHeaderField:@"Content-Type"];
[NSURLConnection
sendAsynchronousRequest:blobRequest
queue:[[NSOperationQueue alloc] init]
completionHandler:^(NSURLResponse *response,
NSData *data,
NSError *error)
{
if ([data length] >0 && error == nil)
{
//here i can get attachment data
imageData=[[NSData alloc]initWithData:data];
}
else if ([data length] == 0 && error == nil)
{
NSLog(@"Nothing was downloaded.");
[HUD hide:NO];
}
else if (error != nil){
NSLog(@"Error = %@", error);
}
}];
私はあなたの助けが必要です。