2

私はセールスフォース開発に不慣れで、Salesforceに接続してトークンを取得しようとしています。

私の質問は2つあると思います:1)SFで認証するためにWebページを使用する必要がありますか?

2)そうでない場合、なぜこれが機能しないのですか?ユーザー名とパスワードによる認証方法を使用しようとすると、次のようになります。{"error": "unsupported_grant_type"、 "error_description": "grant type notsupported"}

これが私のコードです:

NSString *post = [NSString stringWithFormat:@"grant_type=basic-credentials&client_id=%@&client_secret=%@&redirect_uri=%@",
                  kOAuthClientID,
                  kOAuthClientSecret,
                  kOAuthClientAuthURL
                  ];


NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:kOAuthClientTokenUrl]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSError *error;
NSURLResponse *response;
NSLog(@"%@", request);
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"%@", data);

どんな考えでも大歓迎です。

grant_type = authentication_codeを使用してみましたが、別のエラーが発生しました:

{"error": "invalid_grant"、 "error_description":"無効な認証コード"}

4

3 に答える 3

3

ユーザー名/パスワード許可タイプを使用する場合、そのタイプは基本資格情報ではなくパスワードであり、送信する正しいパラメーターのセットは次のとおりです。

grant_type=password
client_id=xxxxxxxxxx
client_secret=1234567890
username=noreply@salesforce.com
password=XXXXXXXXX

前の質問で述べたように、これは機能しますが、SAML などの代替ログイン サービスを使用している Salesforce の顧客をサポートするために、Web ベースのフローを使用したいと考えています。

于 2011-02-11T16:19:06.297 に答える
1

Superfell の答えはほぼ正しいです。パスワードは次のように設定する必要があります。

パスワード + セキュリティトークン

詳細については、 http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_concepts_security.htmを参照してください。

于 2011-12-01T20:37:14.577 に答える
1

1) はい、OAuth を使用して Salesforce にサインインし、アプリケーションへのアクセスを許可する必要があります。iOS アプリの場合は、クライアント フローのSalesforce OAuth Client Flow Docを参照してください。

2) Force.com 開発者サイトで Toolkit for iOS を参照してください。ZKOAuthViewController と呼ばれるクラスがあり、ほとんどすべてを実行してくれます。Takelit の残りの部分は Force.com の SOAP API に基づいていますが、ツールキットに基づいて独自の OAuth ログイン コントローラーを作成し、代わりに REST API を使用しています。

于 2011-02-11T16:09:09.110 に答える