私はauth_session_tokenをAppleのDEPシステムからMDMサーバー用に取得しようとしています。私はPHPで作業しています。私はとても近くていますが、何らかの理由でAppleのサーバから次の応答を得続ける:PHP oAuth署名が無効 - Apple DEP
signature_invalidUnauthorized
私は、オンラインでの研究を行うと、人々はOAuthをに関して使用されているさまざまな方法を試みてから、異なるもののslueを試してみました。しかし、悲しいことに、AppleのDEPサーバーoAuthに関しては何も特定されていません。
多くの人がoAuthクラスの使用を推奨していますが、いずれもAppleのシステムをサポートしていません。それで、すべて手作業で行う必要があるようです。
私はPHPコードでcURLを使用するアプローチを取っていますが、これは正常に動作するようですが、署名を正しく取得できないという事実はありません。
function rfc3986_encode($string) {
$result = rawurlencode($string);
$result = str_replace('%7E', '~', $result);
$result = str_replace('=', '%3D', $result);
$result = str_replace('+', '%2B', $result);
return $result;
}
$consumer = "CK_REDACTED";
$secret = "CS_REDACTED";
$secret2 = "AS_REDACTED";
$token = "AT_REDACTED";
$sign_method = "HMAC-SHA1";
$version = "1.0";
$url = "REDACTED";
$path = "REDACTED";
$timestamp = strtotime('now');
$mt = microtime();
$rand = mt_rand();
$nonce = md5($mt.$rand);
$post = array(
'oauth_consumer_key' => rfc3986_encode($consumer),
'oauth_token' => rfc3986_encode($token),
'oauth_signature_method' => rfc3986_encode($sign_method),
'oauth_timestamp' => rfc3986_encode($timestamp),
'oauth_nonce' => rfc3986_encode($nonce),
'oauth_version' => rfc3986_encode($version)
);
$signatureParameters = array();
foreach ($post as $parameter => $value) {
$signatureParameters[] = rfc3986_encode($parameter) . '=' . rfc3986_encode($value);
}
$signatureParameters = implode('&', $signatureParameters);
$baseString = "GET"
."&".rfc3986_encode($url)
."&".rfc3986_encode($signatureParameters);
$key = rfc3986_encode($consumer) ."&";
$signature = base64_encode(hash_hmac('sha1', $baseString, $key));
$RFC3986signature = rfc3986_encode($signature);
だから、$ RFC3986signatureは、私が送信し終わる何をされています。ここでは
は私が署名を作成しようとしています(これは私の最も最近の試みであるので、再び、私はさまざまな方法のslueを試してみました)方法ですoauth_signatureパラメータの正式な要求では、それは受け入れられることに終わらない。
これを解決する方法は誰か分かりますか?私はDEPポータルで私のサーバを追加したり、&シンボルで区切られた複数のコード/シークレットを使って試したり、それらを逆さまにしたりなど、アップルから入手した上記のさまざまな秘密やトークンを使って署名しようとしました...同じこと...