Код аутентификации Bigcommerce

Как получить код аутентификации?

Я использую URL https://login.bigcommerce.com/oauth2 и передаю client_id={0}&redirect_uri ={1}&response_type=code{2}{3} в методе get, но выдает ошибку "Страница, которую вы искали, не существует".

Я знаю, что после получения кода аутентификации я могу сгенерировать токен. Но первый шаг непонятен, как получить код аутентификации с помощью страницы входа?


person user3388887    schedule 27.05.2014    source источник


Ответы (2)


Я только что прошел через эту проблему с токеном oauth, и документы не очень помогли, но как только я начал, мне наконец удалось настроить приложение, создав мою страницу обратного вызова SSL локально на моем сервере. Как только я указал этот URL-адрес в настройках приложения, все было готово. Предостережение в том, что мне пришлось выполнить «установку» с самого сервера, поскольку это не был общедоступный URL-адрес, когда я вошел в BC как владелец магазина. Затем я смог получить временный токен из строки запроса и отправить обратно на https://login.bigcommerce.com/oauth2/token и получите постоянный токен из потока ответов.

Вы должны включить свой идентификатор клиента, секрет клиента и значение request.querystring["code"] в свой почтовый запрос.

Вот как я получил постоянный токен, который будет внутри jsonResponse:

string baseURL = "https://login.bigcommerce.com/oauth2/token";
string contentType = "application/x-www-form-urlencoded";
string callbackURL = <your SSL callback URL>

HttpWebRequest req = WebRequest.CreateHttp(baseURL);
req.AllowAutoRedirect = true;
req.ContentType = contentType;
req.Method = "POST";

//Build POST content body
StringBuilder sb = new StringBuilder();
sb.AppendFormat("client_id={0}", clientID);
sb.AppendFormat("&client_secret={0}", clientSecret);
sb.AppendFormat("&code={0}", tempToken);
sb.AppendFormat("&scope={0}", scopes);
sb.AppendFormat("&grant_type=authorization_code");
sb.AppendFormat("&redirect_uri={0}", callbackURL);
sb.AppendFormat("&context={0}", storeContext);

//Convert the content to byte array and set content length
string contentString = sb.ToString();
byte[] postData = Encoding.UTF8.GetBytes(contentString);
req.ContentLength = postData.Length;

//Send the data to login server
using (Stream stream = req.GetRequestStream())
{
    stream.Write(postData, 0, postData.Length);
    stream.Flush();
    stream.Close();
}

//Get the request response object
WebResponse resp = req.GetResponse();

//Read the contents of the response
StreamReader sr = new StreamReader(resp.GetResponseStream());
string jsonResponse = sr.ReadToEnd();
person LarryB    schedule 16.06.2014
comment
Привет, я столкнулся с той же путаницей, у меня есть идентификатор клиента, секрет клиента, но что мне нужно поместить в раздел temptoken и как я могу получить хэш магазина для своего магазина. - person Utpal; 17.11.2014

Если вы используете что-то похожее на мой подход, показанный выше, захватите временный токен во время события page_load страницы aspx, определенной в вашем URL-адресе обратного вызова, прочитав значение request.querystring["code"]. Вы можете найти хэш своего магазина в панели управления магазина, одно из мест — это устаревшие учетные записи API, если я правильно помню. ХТН.

person LarryB    schedule 17.11.2014
comment
Спасибо за ваш ответ, в старой учетной записи API мой URL-адрес магазина выглядит следующим образом: store-yhatydrhw.mybigcommerce.com , поэтому я думаю, что «yhatydrhw» — это хэш моего магазина. А также я борюсь с этой частью URL-адреса обратного вызова. Как я могу создать локальное приложение ASP.net и установить его URL-адрес в качестве URL-адреса обратного вызова. Можете ли вы привести пример? - person Utpal; 18.11.2014
comment
Хэш вашего магазина будет состоять из пяти буквенно-цифровых символов. Контекст магазина будет выглядеть примерно так: store/ab123. Создав приложение, укажите URL-адрес обратного вызова, например myserver:56789/default.aspx. Создайте простой веб-сайт на своем хост-сервере, используя SSL (подойдет самозаверяющий сертификат), который соответствует URL-адресу, указанному вами для вашего приложения. Войдите в BC как владелец магазина и «установите приложение» со своего сервера. Чтобы облегчить захват постоянного токена, добавьте запись ответа после почтового запроса, так как выходные данные будут отображаться в iframe на панели управления BC. - person LarryB; 24.11.2014
comment
Вы можете вставить код, который я разместил ниже, в событие page_load, а затем в ответ записать значение jsonOutput, чтобы вы могли видеть его на экране. - person LarryB; 24.11.2014