2017-10-16 61 views
0

我有一個蘋果錢包通過指定webServiceURL,目前我正在努力工作。到目前爲止,通過Auth令牌驗證後,我可以確定是否添加或刪除了通行證,並且我獲得了正確的設備ID以及序列號。但是,當傳遞被添加時,$_POST的值是一個空數組,因此我無法獲得推送令牌。有什麼我失蹤?這是我的PHP。蘋果錢包沒有給網絡服務推送令牌

<?php 
function unauthorized() { 
    header('HTTP/1.1 401 Unauthorized'); 
    exit; 
} 
$headers = apache_request_headers(); 
if (isset($headers['Authorization']) && strpos($headers['Authorization'], 'ApplePass') === 0 && strpos($_SERVER['PATH_INFO']) !== false) { 
    $pathInfo = $_SERVER['PATH_INFO']; 
    if ($pathInfo[0] === '/') { $pathInfo = substr($pathInfo, 1); } 
    $parameters = explode('/', $pathInfo); 
    if ($parameters[0] !== 'v1' || $parameters[1] !== 'devices' || $parameters[3] !== 'registrations' || $parameters[4] !== 'MYPASSIDENTIFIER') { 
    unauthorzed(); 
    exit; 
    } 

    $deviceId = $parameters[2]; 
    $passSerial = $parameters[5]; 

    if ($_SERVER['REQUEST_METHOD'] === 'DELETE') { 
    // User deleted pass 

    } else if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    // User added pass 
    $payload = json_decode($_POST); 
    // $_POST is empty array, and $payload is always nothing 
    } else { 
    // Something fishy 
    unauthorized(); 
    } 

} else { 
    unauthorized(); 
} 

回答

0

嘗試使用REQUEST_URIphp://inpupt

$headers = apache_request_headers(); 
$request = explode("/", substr(@$_SERVER['REQUEST_URI'], 1)); 

if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST" 
    && isset($headers['Authorization']) 
    && (strpos($headers['Authorization'], 'ApplePass') === 0) 
    && $request[1] === "devices" 
    && ($request[3] === "registrations") { 

    $auth_key = str_replace(array('ApplePass '), '', $headers['Authorization']); 

    $device_id = $request[2]; 
    $pass_id = $request[4]; 
    $serial = $request[5]; 

    $dt = @file_get_contents('php://input'); 
    $det = json_decode($dt); 

    // Process Device Token 
+0

感謝您閱讀身體!我不知道$ _POST不會代表JSON或其他雜項數據,所以這非常有見地! –