PHP:使用Post方法生成令牌

时间:2017-03-16 17:37:18

标签: php

美好的一天,

在回到Stackoverflow之前,我一直在谷歌搜索整个下午但没有真正成功。

我要做的是通过引用他们的doc来获取来自myfox api的令牌

  

必须生成一个新令牌才能执行API调用。该   可以通过调用以下方法来请求令牌   https://api.myfox.me/oauth2/token并提供以下参数   (通过POST):client_id,client_secret,用户名,密码和   grant_type设置为密码。

因此我的代码:

function getToken()
{
$clientID = "a65000ee0c57f2e37260e90c375c3";
$clientSecret = "MyLongSecretCode";
$exportFile = "myfile.txt";
$userName = "somebody@somewhere.com";
$userPass = "myPassword123";
$sourceWebsite = "https://api.myfox.me/oauth2/token?client_id=" . $clientID .  "&client_secret=" . $clientSecret . "&username=" . $userName . "&password=" . $userPass . "&grant_type=password";

file_put_contents($exportFile, fopen($sourceWebsite , 'r'));
}

我得到的只是一个PHP错误,表示不允许使用该方法。

知道我在这里缺少什么吗?

非常感谢你对这个问题的帮助。

编辑17.03.2017:

其他用户告诉我,我可以通过使用curl来实现这一点,再次,通过阅读文档看起来这是我可以做的事情:

  

必须生成一个新令牌才能执行API调用。该   可以通过调用以下方法来请求令牌   https://api.myfox.me/oauth2/token并提供以下参数   (通过POST):client_id,client_secret,用户名,密码和   grant_type设置为password。 curl -u CLIENT_ID:CLIENT_SECRET   https://api.myfox.me/oauth2/token -d   'grant_type =密码&安培;用户名= YOUR_USERNAME&安培;密码= YOUR_PASSWORD'   或卷曲https://api.myfox.me/oauth2/token -d   'grant_type =密码&安培; CLIENT_ID = CLIENT_ID&安培; client_secret = CLIENT_SECRET&安培;用户名= YOUR_USERNAME&安培;密码= YOUR_PASSWORD'

现在,对于我的问题:是否有办法将此curl -u查询转换为php指令并将内容输出到其中的文件,如下所示:

{"access_token":"********************************","expires_in":3600,"token_type":"Bearer","scope":null,"refresh_token":"********************************"}

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

非常感谢您的提示,这是一个正在运行的脚本:

我希望这个脚本(以及这篇文章)在某些方面可以对其他人有所帮助。祝你周末愉快。

<?php

$clientID = 'b85036758c385c3cd0c57f2e37260f91';
$clientSecret = 'MyLongSecretCode';
$username = 'myemailaddress@provider.net';
$passwd = 'mypassword';

// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://api.myfox.me/oauth2/token',
    CURLOPT_USERAGENT => 'Codular Sample cURL Request',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        'grant_type' => 'password',
        'client_id' => $clientID,
        'client_secret' => $clientSecret,
        'username' => $username,
        'password' => $passwd
    )
));
// Send the request & save response to $resp
$resp = curl_exec($curl);   

echo $resp;

// Close request to clear up some resources
curl_close($curl);

?>