我一直在使用一个使用令牌进行身份验证的API。我正在使用PHP的SoapClient类来登录所述API并检索我需要提出额外请求的令牌。
问题是API应该返回base64字符串标记,但在PHP中,它们不会被作为bas64字符串处理..我得到一个如下所示的字符串:
ç$P%’™‹2E‡ºË>Šo_ÑÒúé±N5Tá#=œã
而不是看起来像这样的base64字符串:
ERy/R5ycTG0sbRyH9KeMGpi9kPr6kROyaarFYgsPEOU=
注意:这两个字符串实际上并不相关,因为我无法使用php来显示第一个字符串的base64表示。我列为第二个字符串的base64字符串来自有效的soapUI响应。
所以我已经用soapUI确认,我的令牌实际上是作为base64字符串来实现的,但我不能让PHP将它们用作其他请求的字符串。我已经尝试在字符串上执行base64_decode
和base64_encode
,以及其他一些编码/解码,但到目前为止它们都没有工作过。
关于这里发生了什么的想法,以及我如何能够以我需要的方式使用数据?
编辑:这是我用来获取令牌数据的代码。如果这有帮助,那就是DAT api。
$wsdlDat = "http://someurl.com:8000/wsdl/someWSDL.wsdl";
$soapOptions = array( 'loginId' => $userName, 'password' => $userPassword, 'thirdPartyId' => 'KEFKA_TMS', 'trace' => 1 );
$this->datClient = new SoapClient( $wsdlDat , $soapOptions );
$creds = array( 'loginId' => $userName, 'password' => $userPassword, 'thirdPartyId' => 'KEFKA_TMS' );
$loginOptions['loginOperation'] = $creds;
$this->token = $this->datClient->Login($loginOptions);
$this->token = datObjectToArray($this->token); // TURN STD CLASS OBJ TO ARRAY
$token = $this->token['loginResult']['loginSuccessData']['token']['primary'];
$token2 = $this->token['loginResult']['loginSuccessData']['token']['secondary'];
$exp = $this->token['loginResult']['loginSuccessData']['expiration'];