首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用未定义方法的MailChimp接口DrewM\MailChimp\MailChimp::call

调用未定义方法的MailChimp接口DrewM\MailChimp\MailChimp::call
EN

Stack Overflow用户
提问于 2018-01-23 15:50:28
回答 1查看 798关注 0票数 1

我正在尝试验证apikey,但我被这个问题卡住了,如果用户输入apikey,它应该从MailChimp帐户进行验证,并且如果api key与MailChimp不匹配,则应该显示无效密钥的消息。

我的代码:

代码语言:javascript
复制
public function authenticateApiKey(Request $request)
{
    $fieldsValidation = [
        'api_key' => 'required|unique:apikey,api_key',
    ];
    $validator = Validator::make($request->all(), $fieldsValidation);

    if ($validator->fails()) {
        $resultArray = [
            'status' => 0,
            'message' => $validator->errors()->first(),
            'dataArray' => []
        ];
    } else {
        $api = new APIKEY($request->all());
        $mc = new MailChimp($api);
        $mailchimp_ping = ($mc->call('helper/ping'));
        if(!$mailchimp_ping){
        }
        $request->user()->apikey()->save($api);
        $resultArray = ['status' => 1, 'message' => 'Mailchimp Api key added into system successfully!', 'dataArray' => $api];
    }
    return \Illuminate\Support\Facades\Response::json($resultArray, 200);
}

当我调用这个调用时,它说call to aundefined方法有没有其他方法可以让我验证apikey。任何帮助都将不胜感激!

代码语言:javascript
复制
               namespace App\Http\Controllers;

                    use App\APIKEY;
                 use DrewM\MailChimp\MailChimp;
                use Illuminate\Auth\Access\Response;
                  use Illuminate\Http\Request;
                use Illuminate\Support\Facades\Auth;
                  use Illuminate\Support\Facades\DB;
                 use Illuminate\Support\Facades\Input;
              use Illuminate\Support\Facades\Mail;
            use Illuminate\Support\Facades\Validator;


          class ApiController extends Controller
         {

           public function authenticateApiKey(Request $request)
          {
              $fieldsValidation = [

        'api_key' => 'required|unique:apikey,api_key',

    ];
       $validator = Validator::make($request->all(), $fieldsValidation);

    if ($validator->fails()) {
        $resultArray = [
            'status' => 0,
            'message' => $validator->errors()->first(),
            'dataArray' => []
        ];

    } else {

        $api = new APIKEY($request->all());
        $mc = new MailChimp($api);
        $mailchimp_ping = $mc->get('/ping');
        if ($mailchimp_ping["status"] == 401) {
            return redirect()->back()->with("errorMessage","api key is invalid")->withInput(Input::all());
        }


        ///do here if api key is valid

        $request->user()->apikey()->save($api);
        $resultArray = ['status' => 1, 'message' => 'Mailchimp Api key added into system successfully!', 'dataArray' => $api];
        //   }
        return \Illuminate\Support\Facades\Response::json($resultArray, 200);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-23 16:48:35

制作一个request。如果请求有效,则关键字为valid。使用this链接发出ping请求。它是MailChimp API 3.0的运行状况检查端点。

代码语言:javascript
复制
$mailchimp_ping = $mc->get('/ping');

dd($mailchimp_ping);

这是你所要求的完整的控制器,工作正常-

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use App\APIKEY;
use DrewM\MailChimp\MailChimp;
use Illuminate\Auth\Access\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;


class ApiController extends Controller
{

public function authenticateApiKey(Request $request)
{
    $fieldsValidation = [

        'api_key' => 'required|unique:apikey,api_key',

    ];
    $validator = Validator::make($request->all(), $fieldsValidation);

    if ($validator->fails()) {
        $resultArray = [
            'status' => 0,
            'message' => $validator->errors()->first(),
            'dataArray' => []
        ];

    } else {
        $mc = new MailChimp($request->input('api_key'));
        $mailchimp_ping = $mc->get('/ping');
        if ($mailchimp_ping["status"] != 401) {
             $api = new APIKEY($request->all());
             $request->user()->apikey()->save($api);
             $resultArray = ['status' => 1, 'message' => 'Mailchimp Api key added into system successfully!', 'dataArray' => $api];
             return \Illuminate\Support\Facades\Response::json($resultArray, 200);
        }

          $errorResponse = [
                 'message' => 'Not valid api key!',
                 'code' => '401'
               ];
        return $this->apiResponse('error', '401', $errorResponse);

    }
}
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48396634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档