百度第三方登录
首先第三方應用要跟微信帳號合作,然后按照下面的方法操作:
目前,百度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 包解壓的核心文件,注意路徑問題。
?
?
轉載于:https://www.cnblogs.com/520fyl/p/5420764.html
總結
- 上一篇: (转载)Android两种Tab分页的方
- 下一篇: a href='?out=login'是