Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden von PHP zum Aufrufen der Weibo-Schnittstelle zur Implementierung der Weibo-Anmeldung

Während des normalen Projektentwicklungsprozesses können Sie nicht nur ein Konto auf dieser Website registrieren, um sich anzumelden, sondern auch eine Schnittstelle eines Drittanbieters aufrufen, um sich auf der Website anzumelden. Hier nehmen wir die Weibo-Anmeldung als Beispiel. Die Weibo-Anmeldung umfasst Identitätsauthentifizierung, Benutzerbeziehungen und Inhaltsverbreitung. Ermöglichen Sie Benutzern die Anmeldung mit einem Weibo-Konto, um auf Websites Dritter zuzugreifen, Inhalte zu teilen und Informationen zu synchronisieren.

1. Zuerst müssen Sie den Benutzer, der eine Autorisierung benötigt, an die folgende Adresse weiterleiten:


Wenn der Benutzer der Autorisierung zustimmt, springt die Seite zu YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

2. Sie müssen dem oben erhaltenen Code „Exchange for Access Token“ folgen:

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

Rückgabewert: JSON

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


3. Verwenden Sie abschließend das erhaltene OAuth2.0-Zugriffstoken, um die API aufzurufen, die Identität des Benutzers abzurufen und den Vorgang abzuschließen das Login des Benutzers.

Der Einfachheit halber kapseln wir get und post zunächst in common.php unter Anwendung:


Öffentliche Anwendungsdatei common.php:

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

Controller-Verarbeitungscode Login.php:

function get( $url, $_header = NULL ){    
$curl = curl_init();    
//curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false);     
if( stripos($url, 'https://') !==FALSE )    
{        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    }    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_HEADER, 0);    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    if ( $_header != NULL )    {        curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);    }    $ret    = curl_exec($curl);    $info    = curl_getinfo($curl);    curl_close($curl);    if( intval( $info["http_code"] ) == 200 )    {        return $ret;    }    return false;}/* * post method */function post( $url, $param ){     $oCurl = curl_init ();    curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);    if (stripos ( $url, "https://" ) !== FALSE) {        curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );        curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );    }    curl_setopt ( $oCurl, CURLOPT_URL, $url );    curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );    curl_setopt ( $oCurl, CURLOPT_POST, true );    curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param );    $sContent = curl_exec ( $oCurl );    $aStatus = curl_getinfo ( $oCurl );    curl_close ( $oCurl );    if (intval ( $aStatus ["http_code"] ) == 200) {        return $sContent;    } else {        return false;    }}


Vorlagencode login.html:

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>";
        }
    }
}
蘑菇宝蘑菇宝2119 Tage vor1143

Antworte allen(0)Ich werde antworten

Keine Antwort
  • StornierenAntwort