在 php 中请求 Yahoo OAuth 令牌时出现问题
Problem with requesting Yahoo OAuth Token in php
我一直在尝试使用 php 的标准 PECL OAuth 库连接 Yahoo 的 OAuth 服务。当我尝试在我的登录页面上单击提交时,服务器应该重定向到 Yahoo 并要求用户登录,然后重定向回我的站点。提交后,我将 anthe 页面重定向到 Yahoo,但我得到 "uh oh...looks like something went wrong",那只是因为 var_dump 行(请参见下面的代码)。如果我省略 var_dump 语句并单击提交,请求将挂在我网站的登录页面上,不会去任何地方。
我可以根据 Yahoo 的 OAuth 说明使用消费者密钥、秘密和回调 url(对于我的网站)成功地在地址 window 中手动构建 url 并且它将重定向到我指定的位置,但我无法通过 php.
以编程方式执行此操作
不确定 php 库是否不支持 yahoo 的服务,是否我的服务器配置不正确或其他问题。我会说我过去能够连接到雅虎的 Oauth 服务——几年前——但我知道自那以后他们的 OAuth 服务发生了变化,并且使用的是不同的服务。
代码:
$o = new OAuth( $consKey, $consSecret,
OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM );
$o->setVersion('2.0');
$o->setTimestamp(mktime());
$o->enableDebug();
$request_token = NULL;
try {
$response = $o->getRequestToken( "https://api.login.yahoo.com/oauth2/request_auth", [my location]);
$request_token = $response['oauth_token'];
$request_secret = $response['oauth_token_secret'];
fwrite($log, "\n". $mydate . ' token is ' . $request_token);
} catch( \OAuthException $e ) {
fwrite($log, "\n" . $mydate . 'Error: ' . $e->getMessage());
}
Apache 错误日志只是 returns $request_token 和 $request_secret 索引是空白的。我已尽最大努力从以前的帖子中找到答案,但还没有找到 successful.Any 感谢帮助。
我仔细研究了一下,决定不直接使用 OAuth 库。能够通过使用此库获得我需要的东西:https://github.com/hayageek/oauth2-yahoo 使用以下代码:
$provider = new Hayageek\OAuth2\Client\Provider\Yahoo([
'clientId' => [consumer key assigned to app],
'clientSecret' => [consumer secret assigned to app],
'redirectUri' => [redirect location I specified in Yahoo Apps],
]);
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authUrl);
exit;
我一直在尝试使用 php 的标准 PECL OAuth 库连接 Yahoo 的 OAuth 服务。当我尝试在我的登录页面上单击提交时,服务器应该重定向到 Yahoo 并要求用户登录,然后重定向回我的站点。提交后,我将 anthe 页面重定向到 Yahoo,但我得到 "uh oh...looks like something went wrong",那只是因为 var_dump 行(请参见下面的代码)。如果我省略 var_dump 语句并单击提交,请求将挂在我网站的登录页面上,不会去任何地方。
我可以根据 Yahoo 的 OAuth 说明使用消费者密钥、秘密和回调 url(对于我的网站)成功地在地址 window 中手动构建 url 并且它将重定向到我指定的位置,但我无法通过 php.
以编程方式执行此操作不确定 php 库是否不支持 yahoo 的服务,是否我的服务器配置不正确或其他问题。我会说我过去能够连接到雅虎的 Oauth 服务——几年前——但我知道自那以后他们的 OAuth 服务发生了变化,并且使用的是不同的服务。
代码:
$o = new OAuth( $consKey, $consSecret,
OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM );
$o->setVersion('2.0');
$o->setTimestamp(mktime());
$o->enableDebug();
$request_token = NULL;
try {
$response = $o->getRequestToken( "https://api.login.yahoo.com/oauth2/request_auth", [my location]);
$request_token = $response['oauth_token'];
$request_secret = $response['oauth_token_secret'];
fwrite($log, "\n". $mydate . ' token is ' . $request_token);
} catch( \OAuthException $e ) {
fwrite($log, "\n" . $mydate . 'Error: ' . $e->getMessage());
}
Apache 错误日志只是 returns $request_token 和 $request_secret 索引是空白的。我已尽最大努力从以前的帖子中找到答案,但还没有找到 successful.Any 感谢帮助。
我仔细研究了一下,决定不直接使用 OAuth 库。能够通过使用此库获得我需要的东西:https://github.com/hayageek/oauth2-yahoo 使用以下代码:
$provider = new Hayageek\OAuth2\Client\Provider\Yahoo([
'clientId' => [consumer key assigned to app],
'clientSecret' => [consumer secret assigned to app],
'redirectUri' => [redirect location I specified in Yahoo Apps],
]);
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authUrl);
exit;