1

私はセールスフォース添付アプリに取り組んでいます。このアプリは、リード、連絡先、商談、ケース、キャンペーンなどの特定のオブジェクトの添付リストを表示します。

画像、動画、音声などの添付ファイルをアプリから 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);
         }
       }];

私はあなたの助けが必要です。

4

1 に答える 1

0

他のアカウントへのログインに使用したアカウントの種類 (サンドボックスまたは運用) を確認します。

于 2014-10-17T05:07:08.700 に答える