【问题标题】:Passing an OAuth token to the Yahoo API将 OAuth 令牌传递给 Yahoo API
【发布时间】:2026-02-12 21:05:01
【问题描述】:

我使用 Yahoo API 创建了一个新应用。如何使用 CURL 功能传递所需的标头?我尝试时收到此错误消息:

<yahoo:error xml:lang="en-US"><yahoo:description>Please provide valid credentials. OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com"</yahoo:description></yahoo:error>

如何在此代码中传递所需的标头:

$url ="http://fantasysports.yahooapis.com/fantasy/v2/team/223.l.431.t.1";  
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
curl_setopt($ch, CURLOPT_URL, $url);   
//get the url contents  
$data = curl_exec($ch);     
//execute curl request curl_close($ch);   
$xml = simplexml_load_string($data);    
print_r($xml);    
exit;        

【问题讨论】:

  • 请发布您的代码
  • 我们如何在这里传递标头。 $url ="fantasysports.yahooapis.com/fantasy/v2/team/223.l.431.t.1"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); // 获取 url 内容 $data = curl_exec($ch); // 执行 curl 请求 curl_close($ch); $xml = simplexml_load_string($data); print_r($xml);退出;
  • edit 并将评论中的代码添加到您的问题

标签: php api yahoo


【解决方案1】:

获得 OAuth 2.0 访问令牌后,请在以下代码中使用它:

$token = "<token>";

$url = "https://fantasysports.yahooapis.com/fantasy/v2/team/223.l.431.t.1?format=json";

$headers = array(
  'Authorization: Bearer ' . $token,
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
print_r($json);

请注意,它使用https URL 方案通过安全传输通道在Authorization HTTP 标头中显示令牌,并使用format URL 查询参数请求以JSON 形式返回内容。

【讨论】:

  • 谁能告诉如何从消费者密钥和秘密创建令牌