在bigcommerce中,哪个网址必须放在AUTH回调网址中

时间:2018-10-29 11:33:44

标签: php laravel bigcommerce

在制作适用于Bigcommerce api的应用时,必须将哪个URL放在AUTH回调URL中?

当我单击我的草稿应用程序时,它什么也没显示。

我正在使用此网址:

https://we-apps.com/disstem/public/bigcommerce/auth

https://we-apps.com/disstem/public/bigcommerce:它是我文件的路径。

注意:我正在使用laravel框架

我的控制器文件

public function bigcommerce()
{
   $user_id = Auth::id();
   $header =  array(
      "Content-Type" => "application/x-www-form-urlencoded",
   ); 

   $client_id = 'xxxx';
   $client_secret = 'xxxxx';
   $redirect_uri = 'https://w- ap.com/dis/public/bigcommerce';
   $postfields = array(
      "client_id" => $client_id,
      "client_secret" => $client_secret,
      "redirect_uri" => $redirect_uri,
      "grant_type" => "authorization_code",
      "code" =>$_GET['code'],
      "scope" => $_GET['scope'],
      "context" => $_GET['context'],
   );

   $postfields = http_build_query($postfields);
   $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, 'https://login.bigcommerce.com/oauth2/token');
         curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
         curl_setopt( $ch, CURLOPT_VERBOSE, 0 );
         curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'POST');
         curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
         curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
         curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
         curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
   $response = curl_exec( $ch );
   $result = json_decode($response);
   print_r($response);

我的路线文件

 Route::get('/bigcommerce', 'IntegrationController@bigcommerce')->name('bigcommerce')->middleware('auth');

我运行该代码的laravel网址是:

 https://w- ap.com/dis/public/bigcommerce

bigcommerce我提供的我的APP回调网址是:与我的laravel网址相同

https://w- ap.com/dis/public/bigcommerce

,但给出错误'code'的消息是未定义的。。但是当我在bigcommerce中单击应用程序的安装按钮时,它会给我返回代码,上下文和作用域并在bigcommerce上显示它,但是当我运行laravel代码时,它会给我错误。

1 个答案:

答案 0 :(得分:0)

auth回调URL应该与您在应用中定义的用于响应GET request的路由相匹配(在控制面板中单击草稿应用的“安装”按钮时触发)。

这是BC示例PHP应用程序中的一个示例,其中'/auth/callback'是已注册的路由: https://github.com/bigcommerce/hello-world-app-php-silex/blob/master/index.php#L37

在这种情况下,身份验证回调URL将为https://myapp.com/auth/callback

如果您使用Laravel作为框架,则syntax会有所不同,但是概念是相同的。在您的应用程序中定义路由会告诉该应用程序侦听针对特定URL(/ auth / callback)的http请求(在这种情况下为GET)。当您的应用检测到GET请求已发送到/ auth / callback时,它将运行您指定的回调函数来处理http请求。

对于安装BigCommerce应用程序的情况,该回调函数应从GET请求接收临时身份验证代码,上下文和范围,然后创建POST返回BigCommerce身份验证服务,以将其交换为永久性Oauth令牌(此时,您将存储令牌,并且应用程序在控制面板中显示“已安装”)。这就是回调函数正在做的here

编辑: 看起来处理GET参数的语法与Laravel docs recommend的语法不一致:

$ code = $ request-> query('code');

您可能会在这里找到有用的答案:https://stackoverflow.com/a/34642837/8521556