Имя: Пароль:
1C
1С v8
SalesForce и 1С интеграция по API
0 vvf
 
14.12.17
15:56
Проблема не могу подключиться к SalesForce

Вот код для подключения

  PathURL = "eu9.salesforce.com";

  // пробовал и эти варианты
  //PathURL = "test.salesforce.com";
  //PathURL = "https://eu9.salesforce.com";;  
  //PathURL = "https://test.salesforce.com/services/oauth2/token";;
  
  ClientID = "3MVG9I5UQ_мой_ключ_пользователя";
  ClientSecret = "31705_мой_секрет";
  UserName = "моя_почта";
  Password = "мой_пароль";
    
  HTTPСоединение = Новый HTTPСоединение(PathURL,, UserName, Password,,, Новый ЗащищенноеСоединениеOpenSSL);
 
  Соответствие = Новый Соответствие;
  Соответствие.Вставить("Content-Type", "application/x-www-form-urlencoded");
 
  Строка = "grant_type=password&client_id=" + ClientID + "&client_secret=" + ClientSecret + "&username="  + UserName + "&password=" + Password;
 
  HTTPЗапрос = Новый HTTPЗапрос("/services/oauth2/token", Соответствие);
  HTTPЗапрос.УстановитьТелоИзСтроки(Строка, КодировкаТекста.UTF8);
 
  HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("post", HTTPЗапрос);
  Token = HTTPОтвет.ПолучитьТелоКакСтроку();
  Сообщить(Token);

При попытке подключения выходит ошибка.  

{"error":"unsupported_grant_type","error_description":"grant type not supported"}

Как ее побороть?
1 VS-1976
 
14.12.17
16:23
У тебя скорее всего в заголовке не хватает Authorization, если rest поддерживает несколько типов авторизации. И по умолчанию не твой тип авторизации... ( Предположение )
2 VS-1976
 
14.12.17
16:38
https://tools.ietf.org/html/rfc6749#page-8

1.3.  Authorization Grant

   An authorization grant is a credential representing the resource owner's authorization (to access its protected resources) used by the client to obtain an access token.  This specification defines four grant types -- authorization code, implicit, resource owner password credentials, and client credentials -- as well as an extensibility mechanism for defining additional types.

Скорее всего тебе нужно в заголовок добавить

Соответствие.Вставить("Authorization", "Basic Тут пароль в base64("client_id:client_pass")");

Логин пароль к ресурсу можно "получить" на сайте https://www.base64decode.org вставив строчку Логин:Пароль и получив base64 строку
3 vvf
 
15.12.17
09:56
Нет, не помогло, такая же ошибка.

Пробовал
и
Соответствие.Вставить("Authorization", "Bearer d$5maW9uaW5AdmJtLnJ1OlY0OGZnS2Mx");
и
Соответствие.Вставить("Authorization", "Basic d$5maW9uaW5AdmJtLnJ1OlY0OGZnS2Mx");
и
Соответствие.Вставить("Authorization", "d$5maW9uaW5AdmJtLnJ1OlY0OGZnS2Mx");
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.