[精讚] [會員登入]
1613

使用Yahoo OAuth2 1/2

使用Yahoo OAuth2來認證我的網站

分享此文連結 //n.sfs.tw/10724

分享連結 使用Yahoo OAuth2 1/2@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-23 15:34:26 最後編修
2017-02-05 01:43:33 By 張○○
 

自動目錄

此文分為兩個單元
1 使用Yahoo OAuth2 1/2(這篇)
2 使用Yahoo OAuth2 2/2

前言

現在 OAuth 已經漸漸成為認證的主流方式,之前各家提出的OpenAuth方式如Google's AuthSub, AOL's OpenAuth, Yahoo's BBAuth, Upcoming API, Amazon Web Services API 也慢慢的導引到這個標準之下。

有別於Yahoo 的BBAuth,Yahoo OAuth 可以提供不僅只於網頁方式的認證。就我個人來看,無論要使用 yahoo的 BBAuth 或是 OAuth 認證都可以,差別在於 OAuth 是一個公開的標準,雖然不用擔心 BBAuth 會馬上消失,但 OAuth 絕對可以存在比較久。所以論價值性還是 OAuth 比較值得現在投入研究。

如果對於 bbauth 有興趣的人可以參考許多文件,像是 Tsung 的就寫得很清楚。

Yahoo Oauth已經到第二版,我改寫以前的失敗經驗,重寫此文:

一、申請 API Key

Yahoo Developer Network 中心右上角「我的行動程式」->「YDN行動程式」->「Create an App」

依照需求自填,要注意的有二:

1. 只能填domain name,其他路徑都不能填,此欄位填完不能修改。

2. API Permissions 這裡依需求打勾,此欄位填完不能修改。我一開始很直覺的勾了 Contacts,結果後面認證資訊得不到email,屎了很久,也花了很多時間找問題。後來才發現我勾錯項目,可以勾的項目有:

Contacts

Fantasy Sports

Messenger

Profiles (Social Directory)

Relationships (Social Directory)

至於每一個項目裡面包含的內容,可以參考[2]的說明,每個scope點進去有相關的內容。

下面是設定好的畫面:

二、取得 API Key/Secret

申請完畢後會得到一組 ID和Secret

Client ID (Consumer Key) dj0yJm.....很長....D1iOQ--

Client Secret (Consumer Secret) 8373af.......d418824

三、Oauth2的流程

在實作前,我想把流程說一下,如果對原理沒興趣只想趕快實作的人,可以先看下一單元。

這裡借用[1]裡面的「Explicit grant flow 」的圖說明一下:

ouath2其實是很簡單的概念,主要分為三個階段:

 1. 向 Authoriztion Server (這在Yahoo,接下來都稱Yahoo) 要求授權
    -- 如果沒要求過授權,就轉向到 yahoo(這裡是https://api.login.yahoo.com/oauth2/request_auth) ,由使用者決定是否同意將yahoo的資料授權給第三方網站。
    -- 如果使用者同意後,yahoo用GET帶回一個code的hash值。

2. 再用 key/ secret/ code 三個值向Yahoo(這裡是https://api.login.yahoo.com/oauth2/get_token)取得權限標記,也就是 access token。如果成功,你會得到一個 token,否則是失敗的訊息。

3. 拿著token用head的方式直接向 Yahoo(例如profile是在https://social.yahooapis.com/v1/user/me/profile)請求你要的資料。

   這裡yahoo會回傳什麼資料給你,取決於你第一個步驟設定的 API permissions 及你的目url,在[2]裡面的說明對映的url。

上面流程很簡單,事實上,我撞牆好多個小時才通過。接下來,說明程式的寫法。

參考資料

[1] Yahoo Oauth2 文件 https://developer.yahoo.com/oauth2/guide/
[2] Yahoo Oauth2 Scope https://developer.yahoo.com/oauth2/guide/yahoo_scopes/

原文章作廢資料,設定BBAuth

以下內容為2010-11-18原本文章,BBauth的設定使用已經作廢,不符合未來所需,僅供參考

二、使用BBAuth

申請 AppID http://developer.yahoo.com/bbauth/appreg.html

按右邊的 Get An App ID 按鈕,填具資料,請參考 Tsung 寫的內容。

驗證完後,在https://developer.apps.yahoo.com/projects 就會看到一個新的 Project:

三、突然發現一個更棒的連結,直接申請

註冊網站: https://developer.yahoo.com/wsregapp/index.php

再由這裡管理 Project,但是他只具有驗證和刪除的功能。

四、驗證完畢後會導回 BBAuth Success URL 設定的URL,以下是導回的參數。

GET:
Array ( [appid] => EvR5vuvIkY7CVpQyFHkhZCJrUUia8o4- [token] => AOMRD01h3sm8a28UKGmsxQb8i8U8GKmi4TepLvgBz18SKbY- [appdata] => some_application_data [userhash] => GmfaFHams22UuEZ81f8- [ts] => 1292833251 [sig] => 08cc29757e2f9a08741902497447190a )

Tsung 寫得很清楚,userhash 是唯一值,接下來怎麼跑流程和 SESSION 就交給各位自行發揮了。


原文  2010-11-18 15:15:03

END

你可能感興趣的文章

[PHP] 陣列新增資料及整理 在php陣列加入項目和重新整理陣列的方法

[PHP] 將UTF8中文字轉成10進位或16進位數值 原本為了處理 preg_match 中文字的問題[2],用php把中文字轉換成10進位和6進位的數值編碼

PHP程式經驗 #2 -- print和echo的差異 常在寫php的人一定會想知道echo和print這兩個函數有什麼不一樣 驗證 1. 比較print 和echo 函式的執

[PHP+ci4] codeignitor4 Cache 及 Session 使用 memcached php 的framework codeignitor4 中的cache和session使用memcached

[PHP] 好用的php常數 介紹PHP中 __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__等常數

設定Google analytics API #2 -- PHP的程式安裝和撰寫 讓你的網站能夠存取你的Google analytics上面的資料

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

維修冰箱 維修冰箱

世紀帝國征服者新版本--被遺忘的帝國 世紀帝國征服者新版本--被遺忘的帝國 世紀二代的征服者是精典遊戲中的精典,aofe更好玩...

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI