2014-01-21 46 views
0

我正在申請HWIOAuthBundle在oauth中獲取twitter screename

在這個類中,我可以檢索Twitter的ID和訪問令牌,但我不知道如何讓網名:

use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface; 
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseClass; 
use Symfony\Component\Security\Core\User\UserInterface; 


class FOSUBUserProvider extends BaseClass 
{ 

    /** 
    * {@inheritDoc} 
    */ 
    public function connect(UserInterface $user, UserResponseInterface $response) 
    { 
     $property = $this->getProperty($response); 
     $service = $response->getResourceOwner()->getName(); // I can get service name 
     $username = $response->getUsername();//I can get username 
     $accesstoken = $response->getAccessToken(); //I can get access token 
     $screen_name = $response->getScreenName(); // error,how can I get screen name????? 

我怎樣才能獲得Twitter的網名?

+0

假設有這樣一個函數,我想它應該是'getScreenName'。你錯過了_n_。 – Kapep

+0

感謝@kapep,我試過getScreenName和getScreenname,但徒勞無功。 – whitebear

回答

0

我不知道你是否已經解決了你的問題,但有以下解決方案:你可以通過檢查你的vendor/hwi/oauth-bundle/HWI\Bundle\OAuthBundle\OAuth\ResourceOwner,然後尋找你的資源所有者文件來訪問屏幕名稱。您可以在名爲$paths的類的開頭看到一個數組。你所要做的就是使用鍵來訪問想要的值。

Twitter的,你可以看到這一點:

protected $paths = array(
    'identifier' => 'id_str', 
    'nickname' => 'screen_name', 
    'realname' => 'name', 
); 

所有你需要做的就是使用

$response->getNickName(); 

所以,讓我們說你要保存您的用戶名,你會寫什麼像這樣:

$user->setUsername($response->getNickName()); 

和瞧!