【问题标题】:Problem with requesting Yahoo OAuth Token in php在 php 中请求 Yahoo OAuth 令牌的问题
【发布时间】:2020-06-11 06:16:15
【问题描述】:

我一直在尝试使用 PHP 的标准 PECL OAuth 库连接 Yahoo 的 OAuth 服务。当我尝试单击登录页面上的提交时,服务器应重定向到雅虎并要求用户登录,然后重定向回我的站点。提交后,我得到一个页面重定向到雅虎,但我得到一个“呃哦......看起来出了点问题”,这只是因为 var_dump 行(见下面的代码)。如果我省略 var_dump 语句并单击提交,请求将挂在我网站的登录页面上,不会去任何地方。

我可以根据 Yahoo 的 OAuth 指令使用使用者密钥、秘密和回调 url(对于我的网站)成功地在地址窗口中手动构建 url,它将重定向到我指示的位置,但我做不到通过 php 以编程方式。

不确定php库是否不支持yahoo的服务,是否我的服务器配置不正确或其他问题。我会说我在过去(几​​年前)能够连接到 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 错误日志只返回 $request_token 和 $request_secret 索引为空。我已尽力从以前的帖子中找到答案,但没有成功。感谢任何帮助。

【问题讨论】:

  • 是否需要其他信息?感谢我能得到的任何帮助。

标签: php oauth


【解决方案1】:

我对此进行了更多尝试,并决定不直接使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 2016-11-04
    • 2015-08-29
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多