1. 程式人生 > >PHP呼叫微博介面實現微博登入

PHP呼叫微博介面實現微博登入

在平時專案開發過程中,除了註冊本網站賬號進行登入之外,還可以呼叫第三方介面進行登入網站。這裡以微博登入為例。微博登入包括身份認證、使用者關係以及內容傳播。允許使用者使用微博帳號登入訪問第三方網站,分享內容,同步資訊。

1、首先需要引導需要授權的使用者到如下地址:

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

如果使用者同意授權,頁面跳轉至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE

2、接下來要根據上面得到的code來換取Access Token:

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

返回值:

JSON

{
 "access_token": "SlAV32hkKG",
 "remind_in": 3600,
 "expires_in": 3600 
}

3、最後,使用獲得的OAuth2.0 Access Token呼叫API,獲取使用者身份,完成使用者的登入。

話不多說,直接上程式碼:

控制器處理程式碼Login.php:

class Login extends \think\Controller 
{
    public function index()
    {
        $key = "****";
        $redirect_uri = "***微博應用安全域名***/?backurl=***專案本地域名***/home/login/webLogin?";
        //授權後將頁面重定向到本地專案
        $redirect_uri = urlencode($redirect_uri);
        $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}";
        $this -> assign('wb_url',$wb_url);
        return view('login');
    }


    public function webLogin(){
        $key = "*****";
        //接收code值
        $code = input('get.code');
        //換取Access Token: post方式請求    替換引數: client_id, client_secret,redirect_uri, code
        $secret = "********";
        $redirect_uri = "********";
        $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}";
        $token = post($url, array());
        $token = json_decode($token, true);
        //獲取使用者資訊 : get方法,替換引數: access_token, uid
        $url = "https://api.weibo.com/2/users/show.json?access_token={$token['access_token']}&uid={$token['uid']}";
        $info = get($url);
        if($info){
            echo "<p>登入成功</p>";
        }
    }
}

模板程式碼login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>微博登入</title>
</head>
<body>
<a href="{$wb_url}">點選這裡進行微博登入</a>
</body>
</html>

clipboard.png

clipboard.png

clipboard.png