php實現第三方登入,百度第三方登入
php實現第三方登入,百度登入例子
配置說明
1.1 php 版本5.3
1.2 IDE phpstorm9.0.2實現過程
2.1前期準備
建議先閱讀 oAuth2.0的相關資料
http://developer.baidu.com/wiki/index.php?title=docs/oauth,
然後再進行操作,極客學院的第三方登入視訊也可以作為參考
http://www.jikexueyuan.com/course/1742.html
2.2具體實現
1,登入百度開發者中心http://developer.baidu.com/
登入之後,點選【應用管理】,然後點選【建立工程】,填寫好相應的資料。然後我們得到了應用的API KEY和SECRET KEY 如下圖所示。
接著,在【安全設定】中填寫我們的的授權回撥頁的地址,下圖是我做測試用的。
2我沒有用官方給的php-sdk ,所以自己寫了一個。下面是專案的目錄。
建議還是先看一下官方的文件或者上面的視訊,來具體操作一下,體會一下oAuth2.0的授權的過程。專案中涉及到的url都是官方文件裡面的,我下面就不做詳細的介紹了。
首先是config.php$serect_key = '4HV51jiSg2OC0WXQnZ2Vqc0Gxu'; $redirect_url = 'http://localhost/phpfrom0913/baidulogin/callback.php'; $apibase_url = 'https://openapi.baidu.com/rest/2.0/'; $logout = 'http://www.baidu.com';//線上除錯使用
這是用來填寫應用所需要的一些值。包括secret-key,回撥地址,百度應用介面呼叫的基本url資訊,還有重定向用到的url。
下面是login.php 是登入的介面。
“`
當我們點選登入的圖片的時候,我們將訪問回撥地址callback.php其程式碼如下:
```<?php
/**
* Created by PhpStorm.
* User: tao
* Date: 2016-09-13
* Time: 20:50
*/
session_start();
require_once 'config.php';
require_once 'dohttps.php';
$code = $_GET['code'];
if($code){
$getaccesstoken_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=$code&client_id=$api_key&client_secret=$serect_key&redirect_uri=$redirect_url";
$httpsobj = new doHttps();
$https_res = $httpsobj->getdata($getaccesstoken_url);
$accesstoken = $https_res['access_token'];
$userinfo_url = $apibase_url.'passport/users/getLoggedInUser'.'?access_token='.$accesstoken;
$user_res = $httpsobj->getdata($userinfo_url);
$smallpic = $user_res['portrait'];
$nickname = $user_res['uname'];
$_SESSION['accesstoken'] = $accesstoken;
$_SESSION['nickname'] = $nickname;
$_SESSION['smallpic'] = $smallpic;
}else{
echo "<javascript>alert('授權失敗')</javascript>";
}
header("Location: ".'index.php');
其中包含了一個dohttps.php的檔案,,這是用來模擬訪問url以用來獲得對應的get引數,例如code和accesstoken。當程式正確獲取到code的時候就可以完成第三方登入操作了,也可以獲取到使用者相關的第三方的引數值,具體的可以參看官方的文件。
- 執行截圖
登入:
跳轉到百度登入介面:
登入成功,獲取到使用者資訊
退出登入介面
可以看出退出的時候出現了錯誤,這是因為config.php中我們寫的重定url和我們建立的百度應用中的安全配置中的域名不對應。如果想要正確退出,我們需要在【安全設定】中配置正確的根域名,這個我線上下的時候沒有測試成功,因為沒有辦法正確填寫根域名。按照安裝官方文件中的說明去做的話,線上的測試是沒有問題的,可是唯一的問題,線上上測試的時候,當我們第一次用百度授權登陸之後,之後成功退出,再次登陸的時候,如果不清除瀏覽器資料的話,就會出現頁面無法訪問的錯誤,提示是請求回撥地址太頻繁。
至此,我還是沒有解決為什麼會出現我剛剛提到的問題,不知道是不是沒有按照官方的sdk去使用,造成了某個環節記錄無法徹底清除的錯誤,還是自己寫的demo出錯,決定回頭再把sdk試用一遍,看看是否能正確的解決問題,假如有什麼意見,記得戳我。
把整個demo放到百度雲盤裡面了,假如需要的話,自己下載一下咯,不要嫌棄:)http://pan.baidu.com/s/1o7ONgqm OR 連結:http://pan.baidu.com/s/1dFds6WT 密碼:zpd8
相關文章
- Laravel5.6 實現第三方登入 微信登入Laravel
- 第三方登入 (微博登入 web)Web
- php使用第三方QQ登入PHP
- Java實現QQ第三方登入Java
- laravel實現第三方qq一鍵登入Laravel
- 第三方登入原理
- 第三方登入/分享最佳實踐
- 簡單實現第三方qq登入和分享
- 聊聊“密碼登入”、“手機快捷登入”和“第三方聯合登入”密碼
- App 掃碼登入 pc 端(不是微信第三方掃碼登入)怎麼實現?APP
- Android 第三方登入之新浪微博授權登入Android
- Laravel 第三方登入之微博Laravel
- OctoberCMS 外掛 第三方登入
- OAuth2第三方登入OAuth
- 原生 PHP 實現支付寶 App 第三方登入獲取 使用者資訊PHPAPP
- GitHub OAuth 第三方登入示例教程GithubOAuth
- qq第三方登入js_sdkJS
- iOS因QQ第三方登入被拒iOS
- qq第三方登入所需appidAPP
- 關於QQ第三方登入的坑
- 第三方網站整合釘釘登入網站
- sau交流學習社群第三方登陸github--oauth來實現使用者登入GithubOAuth
- Android-使用Android Studio實現第三方QQ登入Android
- 分享,第三方登入,統計,多渠道打包
- QQ第三方登入認證流程(乾貨)
- 友盟分享以及第三方登入整合
- PHP實現Google Oauth的登入系統PHPGoOAuth
- PHP 登入DEMOPHP
- 填坑:註冊登入專案--Token以及Github第三方登入(Vue + Koa2)GithubVue
- 第三方微信登入 | 靜默授權與網頁授權的實現網頁
- JAVA接入支付寶授權第三方登入Java
- 前後端分離下的第三方登入後端
- APP開發,微信第三方登入的介紹APP
- IOS整合第三方支付、分享、登入功能小結iOS
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- PHP如何實現登入認證和鑑權PHP
- java實現微信登入Java
- 封裝QQ、微信、微博的第三方登入和分享封裝