我正在尝试为HybridAuth 库创建 Flickr 提供程序以对用户进行身份验证,但遇到了问题。
我正在使用基于 OAuth 1的Flickr API 。
问题是我感兴趣的 API 调用需要指定用户名或用户 ID,无论用户当前是否经过身份验证。
虽然不方便,但这应该没问题,因为在身份验证期间接收到访问令牌后,Flickr API 会返回用户名和 user_nsid(http://www.flickr.com/services/api/auth.oauth.html,请参阅“将请求令牌交换为访问令牌”)。
但是,HybridAuth 在身份验证期间似乎没有将这些信息存储在$adapter
变量中。我深入研究了代码,发现它们实际上是存储的。函数中var_dump
以下几行的快速显示它们确实存储在(与 相同):loginFinish()
Provider_Model_OAuth1.php
$this->access_raw_tokens
$this
$adapter
// request an access token
$tokens = $this->api->accessToken( $oauth_verifier );
// access tokens as received from provider
$this->access_tokens_raw = $tokens;
到目前为止,一切都很好。但是,我尝试在自定义页面上调用 Flickr 适配器:
try{
// initialize Hybrid_Auth with a given file
$hybridauth = new Hybrid_Auth($config);
$adapter = $hybridauth->authenticate("Flickr");
}
catch(Exception $e){
echo $e;
}
代码执行得很好,但是当我尝试var_dump($adapter);
该access_tokens_raw
字段设置为access_tokens_raw = null
.
如果需要,我可以提供我的 Flickr 提供程序代码 ( ),它与和Flickr.php
几乎相同。Twitter.php
initialize()
loginBegin()
这个问题困扰了我一段时间,非常感谢您的意见!我欢迎任何允许我保留经过身份验证的 Flickr 用户名或 user_nsid 而不损害其他提供商的 HybridAuth 身份验证的解决方案。