首頁 後端開發 php教程 oauth [PHP] Oauth授權和本地加密

oauth [PHP] Oauth授權和本地加密

Jul 28, 2016 am 08:27 AM
oauth

1.Oauth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密資源(如照片,視頻,聯繫人列表),而無需將使用者名稱和密碼提供給第三方

 

關鍵字:appKey appSecret token(令牌))

 

2.SSO授權

如果本地手機裝有微博客戶端,則直接跳到微客戶端,只需點選授權按鈕,就可以登陸了

 

qq第三方登陸使用Oauth2.0實現,測試代碼

點擊下面的連接

https:>

點擊下面的連接

https:: //graph.qq.com/oauth2.0/authorize?resp//www.qingguow.cn/sso.php

 

<?<span>php
</span><span>//</span><span> qq登陆类</span><span>class</span><span> Sso{
    </span><span>const</span> APP_ID="101334262"<span>;
    </span><span>const</span> APP_KEY="xxxxxxxxxxxxxxx"<span>;
    </span><span>//</span><span>初始化</span><span>public</span><span>static</span><span>function</span><span> init(){
        </span><span>header</span>("content-type:text/html;charset=utf-8"<span>);
    }
        </span><span>//</span><span>主函数</span><span>public</span><span>static</span><span>function</span><span> main(){
        </span><span>//</span><span>请求控制</span><span>$action</span>=<span>$_GET</span>['action'<span>];
        </span><span>if</span>(!<span>empty</span>(<span>$action</span><span>)){
            Sso</span>::<span>$action</span><span>();
            </span><span>return</span><span>;
        }
       
        </span><span>$par</span> = 'grant_type=authorization_code'
        . '&client_id='.Sso::<span>APP_ID
        </span>. '&client_secret='.Sso::<span>APP_KEY
        </span>. '&code='.<span>$_REQUEST</span>['code'<span>]
        </span>. '&redirect_uri='.<span>urlencode</span>('http://www.qingguow.cn/sso.php'<span>);
        </span><span>$rec</span>=Sso::postUrlContents("https://graph.qq.com/oauth2.0/token",<span>$par</span><span>);
        </span><span>if</span>(<span>strpos</span>(<span>$rec</span>, 'access_token') !== <span>false</span><span>) {
            </span><span>parse_str</span>(<span>$rec</span>, <span>$accessToken</span><span>);
            </span><span>$openidJson</span>=Sso::getUrlContents("https://graph.qq.com/oauth2.0/me?callback=callback&access_token={<span>$accessToken</span>['access_token']}"<span>);
            </span><span>$openidJson</span>=<span>str_replace</span>("callback( ", "", <span>$openidJson</span><span>);
            </span><span>$openidJson</span>=<span>str_replace</span>(");", "", <span>$openidJson</span><span>);
            </span><span>$openidJson</span>=json_decode(<span>$openidJson</span>,<span>true</span><span>);
            </span><span>header</span>("location:sso.php?action=getQQinfo&openid={<span>$openidJson</span>['openid']}&access_token={<span>$accessToken</span>['access_token']}"<span>);
        }
    }
    </span><span>//</span><span>获取用户信息</span><span>public</span><span>static</span><span>function</span><span> getQQinfo(){
        Sso</span>::<span>init();
        </span><span>$openid</span>=<span>$_GET</span>['openid'<span>];
        </span><span>$access_token</span>=<span>$_GET</span>['access_token'<span>];
        </span><span>$userJson</span>=Sso::getUrlContents("https://graph.qq.com/user/get_user_info?openid={<span>$openid</span>}&access_token={<span>$access_token</span>}&oauth_c>APP_ID);
        <span>$user</span>=json_decode(<span>$userJson</span>,<span>true</span><span>);
        </span><span>print_r</span>(<span>$user</span><span>);
    }
    </span><span>//</span><span>get方式请求数据</span><span>public</span><span>static</span><span>function</span> getUrlContents(<span>$url</span><span>){
        </span><span>$ch</span> =<span> curl_init();
        curl_setopt(</span><span>$ch</span>, CURLOPT_SSL_VERIFYPEER, <span>FALSE</span><span>);
        curl_setopt(</span><span>$ch</span>, CURLOPT_HEADER, <span>false</span><span>);
        curl_setopt(</span><span>$ch</span>, CURLOPT_FOLLOWLOCATION, <span>true</span><span>);
        curl_setopt(</span><span>$ch</span>, CURLOPT_URL, <span>$url</span><span>);
        curl_setopt(</span><span>$ch</span>, CURLOPT_REFERER, <span>$url</span><span>);
        curl_setopt(</span><span>$ch</span>, CURLOPT_RETURNTRANSFER, <span>TRUE</span><span>);
        </span><span>$result</span> = curl_exec(<span>$ch</span><span>);
        curl_close(</span><span>$ch</span><span>);
        </span><span>return</span><span>$result</span><span>;
    }
    </span><span>//</span><span>post请求数据</span><span>public</span><span>static</span><span>function</span> postUrlContents(<span>$url</span>,<span>$data</span> = <span>null</span><span>){
        </span><span>$curl</span> =<span> curl_init();
        curl_setopt(</span><span>$curl</span>, CURLOPT_URL, <span>$url</span><span>);
        curl_setopt(</span><span>$curl</span>, CURLOPT_SSL_VERIFYPEER, <span>FALSE</span><span>);
        curl_setopt(</span><span>$curl</span>, CURLOPT_SSL_VERIFYHOST, <span>FALSE</span><span>);
        </span><span>if</span> (!<span>empty</span>(<span>$data</span><span>)){
        curl_setopt(</span><span>$curl</span>, CURLOPT_POST, 1<span>);
        curl_setopt(</span><span>$curl</span>, CURLOPT_POSTFIELDS, <span>$data</span><span>);
        }
        curl_setopt(</span><span>$curl</span>, CURLOPT_RETURNTRANSFER, 1<span>);
        </span><span>$output</span> = curl_exec(<span>$curl</span><span>);
        curl_close(</span><span>$curl</span><span>);
        </span><span>return</span><span>$output</span><span>;
    }

}
Sso</span>::main();
登入後複製
具體程式碼sso.php檔案:

以上就介紹了oauth [PHP] Oauth授權和本地加密,包括了oauth方面的內容,希望對PHP教程有興趣的朋友有所幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
利用PHP實現OAuth2.0的最佳方式 利用PHP實現OAuth2.0的最佳方式 Jun 08, 2023 am 09:09 AM

OAuth2.0是一種用來授權第三方應用程式存取使用者資源的協議,現已廣泛應用於網際網路領域。隨著網路業務的發展,越來越多的應用程式需要支援OAuth2.0協定。本文將介紹利用PHP實作OAuth2.0協定的最佳方式。一、OAuth2.0基礎知識在介紹OAuth2.0的實作方式之前,我們需要先了解一些OAuth2.0的基礎知識。授權類型OAuth2.0協議定

PHP開發:使用 Laravel Passport 實現 OAuth2 服務提供者 PHP開發:使用 Laravel Passport 實現 OAuth2 服務提供者 Jun 15, 2023 pm 04:32 PM

隨著行動互聯網的普及,越來越多的應用程式都需要使用者進行身份驗證和授權。 OAuth2是一種流行的認證和授權框架,它為應用程式提供了一種標準化的機制來實現這些功能。 LaravelPassport是一個易於使用,安全且開箱即用的OAuth2伺服器實現,它為PHP開發人員提供了構建OAuth2身份驗證和授權的強大工具。本文將介紹LaravelPassport的使

PHP與OAuth:實現微軟登入集成 PHP與OAuth:實現微軟登入集成 Jul 28, 2023 pm 05:15 PM

PHP和OAuth:實現微軟登錄整合隨著互聯網的發展,越來越多的網站和應用程式需要支援用戶使用第三方帳號登錄,以提供方便的註冊和登入體驗。微軟帳號是全球廣泛使用的帳號之一,許多用戶希望使用微軟帳號登入網站和應用程式。為了實現微軟登入集成,我們可以使用OAuth(開放授權)協定來實現。 OAuth是一種開放標準的授權協議,允許使用者授權第三方應用程式代表自己

PHP中的OAuth:建立一個JWT授權伺服器 PHP中的OAuth:建立一個JWT授權伺服器 Jul 28, 2023 pm 05:27 PM

PHP中的OAuth:創建一個JWT授權伺服器隨著行動應用和前後端分離的趨勢的興起,OAuth成為了現代Web應用中不可或缺的一部分。 OAuth是一種授權協議,透過提供標準化的流程和機制,用於保護使用者的資源免受未經授權的存取。在本文中,我們將學習如何使用PHP建立一個基於JWT(JSONWebTokens)的OAuth授權伺服器。 JWT是一種用於在網路中

如何使用PHP和OAuth進行Google Drive集成 如何使用PHP和OAuth進行Google Drive集成 Jul 31, 2023 pm 04:41 PM

如何使用PHP和OAuth進行GoogleDrive整合GoogleDrive是一款受歡迎的雲端儲存服務,它允許用戶在雲端儲存檔案並與其他用戶共用。透過GoogleDriveAPI,我們可以使用PHP編寫程式碼來與GoogleDrive進行集成,實現檔案的上傳、下載、刪除等操作。要使用GoogleDriveAPI,我們需要透過OAuth進行驗證並

php如何使用OAuth2? php如何使用OAuth2? Jun 01, 2023 am 08:31 AM

OAuth2是一個廣泛使用的開放標準協議,用於在不將用戶名和密碼直接傳輸到第三方應用程式的情況下授權存取他們的用戶資源,例如Google,Facebook和Twitter等社交網路。在PHP中,您可以使用現成的OAuth2庫來輕鬆實現OAuth2流程,或者您可以建立自己的程式庫來實現它。在本文中,我們將重點放在使用現成的OAuth2庫,如何透過它來使用OAut

PHP中的OAuth2鑑權方法及實作方式 PHP中的OAuth2鑑權方法及實作方式 Aug 07, 2023 pm 10:53 PM

PHP中的OAuth2鑑權方法及實現方式隨著網路的發展,越來越多的應用程式需要與第三方平台互動。為了保護用戶的隱私和安全,許多第三方平台使用OAuth2協定來實現用戶鑑權。在本文中,我們將介紹PHP中的OAuth2鑑權方法及實作方式,並附上對應的程式碼範例。 OAuth2是一種授權框架,它允許使用者授權第三方應用程式存取其在另一個服務提供者上的資源,而無需提

Laravel開發:如何使用Laravel Passport實現API OAuth2身份驗證? Laravel開發:如何使用Laravel Passport實現API OAuth2身份驗證? Jun 13, 2023 pm 11:13 PM

隨著API的使用逐漸普及,保護API的安全性和可擴充性變得越來越關鍵。而OAuth2已經成為了一種廣泛採用的API安全協議,它允許應用程式透過授權來存取受保護的資源。為了實現OAuth2身份驗證,LaravelPassport提供了一種簡單、靈活的方式。在本篇文章中,我們將學習如何使用LaravelPassport實作APIOAuth2身份驗證。 Lar

See all articles