Я пытаюсь использовать Oauth для подключения к salesforce из приложения .NET. Я использую DotNetOpenAuth на данный момент, и мне не повезло. Я могу получить твиттер/google и т. Д., Чтобы нормально работать, но когда я создаю новую потребительскую услугу для Salesforce, это просто дает мне ошибку (400/Bad Request)Salesforce DotNetOpenAuth/Oauth Проблемы с удаленным доступом
Я использую InMemoryTokenManager, но прежде, чем я получу крик на, позвольте мне повторить итерацию, что твиттер и другие работают отлично. Я намерен заменить менеджера inmemorytoken внедрением базы данных, но пока я просто хочу заставить его работать.
Странная вещь, если я вручную создать URL - https://login.salesforce.com/services/oauth2/authorize?response_type=code & client_id = [CONSUMER_KEY] & redirect_uri = [REDIRECT_URL] и введите его в браузере. Я нахожусь на странице Salesforce, чтобы авторизовать приложение для доступа к моей учетной записи - тот, который я ожидаю увидеть, должен все работать.
Ожидается ли такое поведение? Это похоже на дыру в безопасности, но, может быть, я не понимаю все правильно.
Любые идеи, в которых я ошибаюсь?
ConsumerCode - (ну, важная часть, по крайней мере)
public static readonly ServiceProviderDescription ServiceDescription = new ServiceProviderDescription
{
RequestTokenEndpoint =
new MessageReceivingEndpoint(
"https://login.salesforce.com/services/oauth2/authorize",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
UserAuthorizationEndpoint =
new MessageReceivingEndpoint(
"https://login.salesforce.com/services/oauth2/authorize",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
AccessTokenEndpoint =
new MessageReceivingEndpoint(
"https://login.salesforce.com/services/oauth2/token",
HttpDeliveryMethods.GetRequest |
HttpDeliveryMethods.AuthorizationHeaderRequest),
TamperProtectionElements =
new ITamperProtectionChannelBindingElement[] {
new HmacSha1SigningBindingElement() },
};
OAuthController.cs
if (this.SFTokenManager != null)
{
var SF = new WebConsumer(SFConsumer.ServiceDescription, this.SFTokenManager);
// Is Twitter calling back with authorization?
var accessTokenResponse = SF.ProcessUserAuthorization();
if (accessTokenResponse != null)
{
this.SFAccessToken = accessTokenResponse.AccessToken;
}
else if (this.SFAccessToken == null)
{
// If we don't yet have access, immediately request it.
SF.Channel.Send(SF.PrepareRequestUserAuthorization());
}
return View("SFIn");
}
else
{
return View("SFOut");
}
Линия я получаю мои 400 на это
// If we don't yet have access, immediately request it.
SF.Channel.Send(SF.PrepareRequestUserAuthorization());
Это звучит, как вы, возможно, с помощью клиента OAuth1 но вызова oauth2 конечных точек. – superfell