百度第三方登陸

首先第三方應用要跟微信賬號合做,而後按照下面的方法操做:php

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

  百度受權的Access Token是有有效期的,這樣會影響用戶的體驗和增長開發者的工做。因此平臺提供了一種方式能夠保證受權有效期爲永久。sql

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

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

能夠經過百度的開放平臺去註冊一個應用。以後你會獲得一個App Key和一個App Secret。擁有它們,你才能夠申請權限。微信

假設你的App Key是「1234567890」,App Secret是「abcdefghijklmnopqrstuvwxyz"app

第二步:寫代碼。dom

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

對於OAuth來講,不少細節不須要咱們去關注的,只要知道幾個重要的步驟便可:網站

 1. 第三方發起百度受權登陸請求,百度用戶容許受權第三方應用後,百度會拉起應用或重定向到第三方網站,而且帶上受權臨時票據code參數;ui

 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等等,這裏的暱稱是指用戶顯示在百度上的名字,而不是用戶的登陸名)。

實例代碼:

一、調用受權頁面: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);
    }

}

二、回調程序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;
}

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

 

 

相關文章
相關標籤/搜索