2014-03-02 3 views
1

이 bigcommerce Auth 콜백 (새 API의 일부)으로 우리의 머리카락을 당겨서. 일반 PHP API와 최신 분기를 모두 시도해 보았습니다. https://github.com/maetl/bigcommerce-api-php/tree/f43e652c71550f9074dbf696c740b30651110051은 OAUTH를 지원한다고 가정합니다.Bigcommerce Auth 콜백/w PHP API

여기에서 데모 코드를 사용하고 있습니다. https://developer.bigcommerce.com/apps/callback PHP로 시작합니다. 내 애플 리케이션을 올바르게 설정하지만 내 php가 that.The없이 erroring입니다 아래에 앞으로 OAUTH 지점을 링크를 사용하여 원본 으로이 코드는 존재하지 않는 호출하려고 시도하고있다. 여기

이 ... 이것은 ...이 같은 오류가 먼저 배열의 마지막 3 부에서 '수'

Notice: Undefined variable: request in /var/www/integrations/bigcommerce/oauth2.php on line 18 Fatal error: Call to a member function get() on a non-object in /var/www/integrations/bigcommerce/oauth2.php on line 18 

약 신음

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

include $_SERVER['DOCUMENT_ROOT'] . '/libraries/bigcommerce/bigcommerce.php'; 

use Bigcommerce\Api\Connection; 

$tokenUrl = "https://login.bigcommerce.com/oauth2/token"; 
$connection = new Connection(); 
$connection->useUrlencoded(); 
$response = $connection->post($tokenUrl, array(
    "client_id" => "#myid", 
    "client_secret" => "#mysecret", 
    "redirect_url" => "http://#myoauthurl", 
    "grant_type" => "authorization_code", 
    "code" => $request->get("code"), 
    "scope" => $request->get("scope"), 
    "context" => $request->get("context"), 
)); 

$token = $response->access_token; 
?> 

내 코드입니다 그들을 수동으로 추가 제거하십시오 ...

"code" => $_GET["code"], 
"scope" => $_GET["scope"], 
"context" => $_GET["context"], 

이러한 변경 사항으로 인해 다음과 같은 오류가 발생합니다.

라이브러리의 CURL 연산에 문제가있는 것처럼 보이는 handleReponse 또한 나는이 부분으로의 암호를 설정하지 않는 것하지만

Bigcommerce::setCipher('RC4-SHA'); 
Bigcommerce::verifyPeer(false); 

내가 그들을 포착 할 수 여기에 올바른 클래스를 첨부 할 필요 이전 문제가 있었다 암호리스트를 참조 그것은 신음하는 것을 계속한다.

다른 누구도 위의 정보를 얻거나 다른 아이디어가 있습니까?

답변

4

API를 사용하는 것이 더 어려워지기보다는이를 달성하기 위해 CURL을 사용하여 종료했습니다.

다음과 같이

...

$data = array(
    "client_id" => "", 
    "client_secret" => "", 
    "redirect_uri" => "http://", 
    "grant_type" => "authorization_code", 
    "code" => $_GET["code"], 
    "scope" => $_GET["scope"], 
    "context" => $_GET["context"], 
); 
$postfields = http_build_query($data); 

$ch = curl_init();      
$url = "https://login.bigcommerce.com/oauth2/token"; 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
curl_close ($ch); 

$obj = json_decode($output); 
$access_token = $obj->{'access_token'}; 
$scope = $obj->{'scope'}; 
$id = $obj->{'user'}->{'id'}; 
$email = $obj->{'user'}->{'email'}; 
$context = $obj->{'context'}; 
+0

안녕하세요,이 게시물은 몇 개월 알지만, 나는 BigCommerce의 OAuth 문서에서 찾고있다 나는 첫 번째 단계에 대해 너무 혼란 스러워요. 나는 과거에 OAuth를 사용해 왔으며 인증 코드 (토큰 교환, 요청 등)를 얻은 후에해야 할 일을 이해하지만 처음에는 사용자에게 로그인하도록 지시해야합니까? – Adam

+0

그렇지 않습니다. 그들은 Bigcommerce에 로그인하고 'apps'을 클릭하고 응용 프로그램에 OAUTH합니다. 즉 Bigcommerce 로그인을 사용하여 사이트에 접속합니다. 이게 말이 돼? –

+0

오, 알았어요. 그래서 이것은 빅 커머스 밖에서 할 수있는 것이 아닙니다. 독립 실행 형 응용 프로그램에 통합 할 수있는 기능이라고 생각했지만 처음에는 bigcommerce 계정에 로그인 한 다음 응용 프로그램에 액세스해야했습니다. – Adam

관련 문제