我正在尝试使用OAuth为salesforce帐户获取访问令牌。我有使用者密钥和消费者密钥以下是我的代码。但是当它调用UsernamePasswordAsync方法时会抛出异常。请帮我解决这个问题。
private static async Task RunSample()
{
try
{
var auth = new AuthenticationClient();
// Authenticate with Salesforce
Console.WriteLine("Authenticating with Salesforce");
var url = IsSandboxUser.Equals("true", StringComparison.CurrentCultureIgnoreCase)
? "https://login.salesforce.com/services/oauth2/token "
: "https://test.salesforce.com/services/oauth2/token";
await auth.UsernamePasswordAsync(ConsumerKey, ConsumerSecret, Username, Password, url);
Console.WriteLine("Connected to Salesforce");
var client = new ForceClient(auth.InstanceUrl, auth.AccessToken, auth.ApiVersion);
// retrieve all accounts
Console.WriteLine("Get Accounts");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
修改 我得到的例外是 例外:身份验证失败 错误:Salesforce.Common.Models.Error.InvalidGrant 堆栈跟踪: 在Salesforce.Common.AuthenticationClient.d__1.MoveNext() ---从抛出异常的先前位置开始的堆栈跟踪结束--- 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在System.Runtime.CompilerServices.TaskAwaiter.GetResult() 在SalesForceAuthSample.Program.d__7.MoveNext()在C:\ Users \ Pankaj Dalvi \ Documents \ Visual Studio 2015 \ Projects \ MVP \ SalesForceAuthSample \ SalesForceAuthSample \ Program.cs:第65行
答案 0 :(得分:0)
只要您确定自己的所有凭据都正确无误 - 我要检查的下一个项目就是您的已连接应用的“编辑”菜单中列出的OAuth政策。对于用户名密码OAuth流程,我认为需要将其设置为All users may self-authorize
。
另一个选项Admin approved users are pre-authorized
似乎在用户名密码流中没有意义,例如使用用户名密码流时,用户没有批准步骤。其他两种流类型,即Web服务器流和用户代理流,都有批准步骤。 Salesforce的Edit Connected App Behavior有更多详细信息。