【问题标题】:MailChimp API DrewM\MailChimp\MailChimp::call() call to undefined methodMailChimp API DrewM\MailChimp\MailChimp::call() 调用未定义的方法
【发布时间】:2018-07-01 23:20:41
【问题描述】:

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

我的代码:

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 的方法。 任何帮助将不胜感激!

               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);
    }
}

【问题讨论】:

    标签: php laravel mailchimp-api-v3.0


    【解决方案1】:

    创建一个request。如果请求有效,则密钥为valid。按照this 链接发出ping 请求。这是MailChimp API 3.0 的健康检查端点。

    $mailchimp_ping = $mc->get('/ping');
    
    dd($mailchimp_ping);
    

    这是您请求的可以正常工作的完整控制器-

    <?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);
    
        }
    }
    }
    

    【讨论】:

    • 你能不能给我一个小演示如何提出请求我是 mailchimp 的新手,我被困在这个问题上,任何帮助将不胜感激。
    • 向我们展示您是如何向 mailchip 提出请求的,这是可行的
    • $mailchimp = 新 \Mailchimp($api); $mailchimp_ping = ($mailchimp->call('helper/ping')); if(!$mailchimp_ping){ //key 没用 //do stuff
    • 这里没有任何工作你可以看到上面我提出请求的代码
    • $api = new APIKEY($request->all()); $request->user()->apikey()->save($api); $resultArray = ['status' => 1, 'message' => 'Mailchimp Api key 添加到系统成功!', 'dataArray' => $api];
    猜你喜欢
    • 2017-01-09
    • 2016-12-22
    • 2014-08-13
    • 2014-08-04
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2017-09-26
    相关资源
    最近更新 更多