百度第三方登錄


首先第三方應用要跟微信帳號合作,然后按照下面的方法操作:

  目前,百度OAuth2.0支持五種獲取Access Token的流程和一種刷新獲取AccessToken方式,第三方可根據需求選取合適的方式:

  百度授權的Access Token是有有效期的,這樣會影響用戶的體驗和增加開發者的工作。所以平台提供了一種方式可以保證授權有效期為永久。

  • 實現方式:返回給第三方一個月有效期的Access Token + 十年有效期的Refresh Token。
  • 實現原理:Refresh Token的作用就是在Token有效期截止前,刷新以獲取新的Access Token。

第一步:注冊百度直達號應用。

可以通過百度的開放平台去注冊一個應用。之后你會得到一個App Key和一個App Secret。擁有它們,你才可以申請權限。

假設你的App Key是“1234567890”,App Secret是“abcdefghijklmnopqrstuvwxyz"

第二步:寫代碼。

將獲取到的OAuth的php版本的SDK加入你的project中。將你申請到的Key和Secret做為兩個變量定義並賦值。

對於OAuth來說,很多細節不需要我們去關注的,只要知道幾個重要的步驟即可:

 1. 第三方發起百度授權登錄請求,百度用戶允許授權第三方應用后,百度會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code參數;

 2. Access Token:用戶身份驗證和授權的憑證。第三方應用在調用百度開放API之前,首先需要獲取Access Token。

 3. 通過code參數加上AppID和AppSecret等,通過API換取access_token;

 4. 通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

  4. 獲得未授權的access_token這個獲得未授權的 access_token就相當於放行條,也就是百度允許你開始獲取用戶的權限。

  5. 根據這個access_token的內容,獲得一個url地址,這個地址頁面就是想登錄你應用的用戶輸入用戶名和密碼的地方。注意的是,這個url是屬於百度為你的這個應用創建的回調地址。

  6. 用戶在上述登錄界面輸入自己的用戶名和密碼,成功登錄之后,你可以獲得已授權的 Access KEY。這個Access Key就包含了用戶多登錄信息(包括昵稱、用戶openID等等,這里的昵稱是指用戶顯示在百度上的名字,而不是用戶的登錄名)。

實例代碼:

1、調用授權頁面:login.php

//百度第三方登錄函數
function baidu(){
    require_once('u/baidu/Baidu.php');
    $clientId = '1234567890';
    $clientSecret = 'abcdefghijklmnopqrstuvwxyz';
    $redirectUri = 'http://www.bookask.com:8080/?a=login&b=callback&c=baidu';
    $domain = '.book.com';
    $baidu = new Baidu($clientId, $clientSecret, $redirectUri, new BaiduCookieStore($clientId));
    // 獲取用戶id和用戶名
    $user = $baidu->getLoggedInUser();
    // 百度第三方登錄url地址和退出url地址
    if ($user) {
      $logoutUrl = $baidu->getLogoutUrl('http://robin928.sinaapp.com/demos/website/logout_callback.php?u=' . 
                                        urlencode(BaiduUtils::getCurrentUrl()));                            
      header("Location:".$logoutUrl);  
    } else {
      $loginUrl = $baidu->getLoginUrl('', 'popup');
      header("Location:".$loginUrl);
    }

}

2、回調程序callback.php

// 百度第三方回調函數
function baidu(){
    require_once('u/baidu/baiduapi.inc.php');
    
    if ($user) {
    
        $apiClient = $baidu->getBaiduApiClientService();
        $profile = $apiClient->api('/rest/2.0/passport/users/getInfo', 
                       array('fields' => 'userid,username,sex,birthday'));
        var_dump($profile);               
        // 第三方登陸數據處理開始    
        $userid =$profile['userid'];
        $sql = "select * from `ub01` where ub01004 = '$userid'";
        $chek = _selectone($sql) ? _selectone($sql) : array();
        if(!empty($chek)){
            $_SESSION['uid']=$res['ua01001'];
            echo '授權成功';
            // header("Location:?"); 
        }else{
            echo '授權失敗';
        }
    }else{
        echo "授權失敗";
    }

exit;
}

3、PHP-SDK-1.0.rar 包解壓的核心文件,注意路徑問題。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM