我正在尝试为HybridAuth library创建一个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
与{{1}相同}):
$adapter
到目前为止一切顺利。但是,我尝试在自定义页面上调用Flickr适配器:
// request an access token
$tokens = $this->api->accessToken( $oauth_verifier );
// access tokens as received from provider
$this->access_tokens_raw = $tokens;
代码执行正常,但当我尝试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
。
如果需要,我可以提供我的Flickr提供商代码(access_tokens_raw = null
),这与Flickr.php
和Twitter.php
时的initialize()
几乎相同。
这个问题一直困扰着我,我非常感谢你的投入!我欢迎任何允许我保留经过身份验证的Flickr用户名或user_nsid而不会影响其他提供商的HybridAuth身份验证的解决方案。