鲲圭发现 第三方平台登录之将Twitter集成到你的独立站

第三方平台登录之将Twitter集成到你的独立站

创建应用

首先你需要申请一个开发者账号,登录到 https://developer.twitter.com/en/apps,根据步骤创建一个应用,创建成功后会得到app keyapp secret

发起授权请求

我们需要首先下载Twitter oAuth开发包,下载地址:https://twitteroauth.com/。

这里本人根据项目需要去除了很多不相关的类库文件,只保留了开箱即用的精简版,大家在本文末尾留言可以获得下载地址。

引入twitter.php类后,实例化客户端:

require_once 'path/to/twitter.php';
$client = new TwitterClient();
$client->setConsumerKey('<<你的APP KEY>>']);
$client->setConsumerSecret('<<你的APP SECRET>>']);
$client->setOauthCallback('<<你的网站接收Twitter返回code的回调地址>>');

通过调用getAuthorizeURL()方法可获得授权请求链接:

header('Location: '.$client->getAuthorizeURL());

生成的请求链接形如:https://api.twitter.com/oauth/authenticate?oauth_token=X2c-fAAAADAAvJpHAAABcip8sAg

登录成功后,Twitter将会重定向到你网站的回调地址,并附加上新的oauth_token参数:https://api.twitter.com/oauth/authenticate?oauth_token=FXO7fwAAAAAAvJpHAAABciqK1qA

回调验证

首先还是需要实例化Twitter客户端,代码参考上面的“发起授权请求”部分,然后我们需要调用getCallback()方法,getCallback()方法首先会去验证请求的有效性,然后再次发起向接口“account/verify_credentials”发起请求以获得用户的基本信息:

public function getCallback() {
    if(isset($_GET['oauth_token'])){
        $connection = new TwitterOAuth($this->_key, $this->_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
        $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);
        if($access_token){	
            $connection = new TwitterOAuth($this->_key, $this->_secret, $access_token['oauth_token'], $access_token['oauth_token_secret']);
            $params = ['include_entities'=>'false'];
            return $connection->get('account/verify_credentials',$params);
        }
    }
}

用户信息识别及存储

通过上一步getCallback()调用后,我们会得到用户的基本信息:id, name, profile_image_url 分别对应于用户的平台唯一识别号、名字、头像地址,拿到这三个必要信息后我们就能将用户纳入自己的用户登录系统了,至于判断及存储逻辑在我们专栏前面都有所提及,如有疑问可在下方留言。