php校验苹果账号返回invalid_client

这是小主本人第一次跟ios打配合,可以说是差点就暴走了,废话不多说看代码

//模拟post提交 

public static function http_post_json($json,$t_url) {

    $postData = http_build_query($json);

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $t_url);

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // stop verifying certificate

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($curl, CURLOPT_POST, true);

    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

    curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

    $r = curl_exec($curl);

    curl_close($curl);

    return $r;

}

这是小主专门给ios官方接口写的POST的CURL请求,ios也有官方说明必须用application/x-www-form-urlencoded请求头的方式来请求这个接口

因为小主比较懒 client_secret 这个算法实在是不想算,于是就交给了ios客服端大哥传给我,这个也只是传一次,我这边接口会写死,因为过期时间有6个月,但是客户端改会比较麻烦,就决定6个月ios生成一次我这边更新一下

下面是小主请求post方法的代码也是为了大家方便

public function verifyReceipt(){

    $t_url = 'https://appleid.apple.com/auth/token';

    $json = [
         'client_id' => 应用程序标识符,
         'refresh_token' => 客户端返回的token,
         'client_secret' => 客户端生成的密钥,
         'code' => 从应用程序的用户代理收到的授权代码,
         'grant_type' => 'authorization_code',(这个呢,是小主理解复杂了,其实就是要传authorization_code,才闹出这么大的笑话来,大家不必担心,小主已经给大家踩过坑了)
     ];

     $info = $this->http_post_json($json,$t_url);

}

这些就可以完美解决返回invalid_client问题

你可能感兴趣的:(php,api,apple,苹果校验接口)