![2015-07-25_012234 2015-07-25_012234](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiafEAHK0ufR8ncbX0kBcSuHkX44sBS6G20MAFHRSunVgIofGovyR-k5fy7gfPTCIF3gwtGeRit-pBuHNwl6N_GhRjUiZRDoAOXTQxNFX9dogvPHnD4rVlcepnqV9TBqBBqSTw0CA/?imgmax=800)
這篇是給想要整合ORCID的系統採用的方案。除了以ORCID建議的方式來設計OAuth登入功能,我還用bookmarklet來製作信任託管授權功能。
功能簡介 / Introduction
現在很多系統都想要整合ORCID,但是大部分系統的整合方式都只是提供一個輸入框,要作者自行註冊再自己複製ORCID編號。可是現在已經是OAuth的時代,我們可以採用ORCID建議的三方登入來建置登入按鈕。
![2015-07-25_003703 2015-07-25_003703](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN2gBKIZwIRaC2ymShIIgX9inEq-afHGinM9d6OTBacGnZscKRl1Utdb9ik4bDskkokbpsXUmzpH8hXKA_9UnVC2aCyU7_Og1VwMA7stTh_CbU6eORuwB_UUN1boYRR9Zw4-ErmA/?imgmax=800)
有注意到上面這張圖裡面顯示的「布丁布丁吃什麼?」要求取得登入訊息的資訊嗎?這個方法很簡單,不必動到任何伺服器端的程式碼,只要用JavaScript在前端執行就能夠搞定。
操作說明 / Usage Instruction
以下介紹如果在尚未登入ORCID,也沒有註冊ORCID的情況下使用此方案的過程。
登入與註冊 / Login or registration
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixXfO9iZpveldIJyYKLhzcC6PozjhASug6VFUPC0WDesJM0rDQL8hBCHp_yQ5PsQZTljRE671X9NFO1ImSNN_6WnpebmOKqGX7QhA5b3dNVgcSKm3tL13wSoNve6S3DEZLrhgGFw/?imgmax=800)
這個方案是為了整合既有的系統。系統通常會有Email的輸入框,也會有ORCID ID的輸入框。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyd6d9e0hfSj_7LMWzoG9_bgh3qPqNmYxBNbYlfXfAJQLPZ8wxVuJKMZtC602dhRG8R_ICOAW_pvvhjxn1Rs84UzcVCclxkhB6LtlrQvcrHtaibqzFCXtexMshhcCcLezI30hG7w/?imgmax=800)
如果有加入布丁式ORCID整合方案,就會變成上面的樣子。
![2015-07-25_003703 2015-07-25_003703](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz4YZQrnfwQIQjv8YHp7XEFAZWorGknTtNF2V9dAN9hsKGqghzCcPVrAlOzROlSLmP9VhVjh5YOhBg24akmK5a8J3eHdqkhOD4eQUcIsx1_cmLQEQwIawFTQEQG-2RH8yhIH3r4A/?imgmax=800)
按下「建立或連接ORCID ID」會跳出要求ORCID登入畫面。你也可以在該畫面的「Don't have an ORCID iD? Register.」切換成註冊畫面。
![2015-07-25_005901 - Copy 2015-07-25_005901 - Copy](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeTgYN585GVhkQhhZl4BkWLwAtWssAFrgnJf72KbA5xOEfIjNuYsWCOtNmvrcvN337Nf_Ncx2l0kZ4dknxioOSis5e2NTgGBR8-wsyQ3mrqJvaQor9wZrIRQD2ya0wJCjbPgciJg/?imgmax=800)
登入成功之後,該視窗會關閉,然後原本的視窗中會抓到登入之後的ORCID ID。
授權 / Add trusted party
接下來我們要加入信任託管的授權。
![2015-07-25_005901 - Copy (2) 2015-07-25_005901 - Copy (2)](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtVCbTCUWLw42VRMti2Ogc-m5p0ZbUMvZwJuAaBJnPI1fKZov47W5v24JfDdezWydElVdPU138I1YssWoqrxe9TspZGPXsVQB1hUARG-Y9GEi1imRIb7dH6CqWquGfA4KU2G7TLQ/?imgmax=800)
請照著下面的指示,把「授權政大」(這個按鈕的字可以自訂)拖曳到書籤列。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi36u_xC3JOOZ1gir7RDz9t0-NR1cvTNQybdqMjhtQHSvAp5VXlrFeEwrSYyyaAh2yGx62ZEpQmToykX8JaqFflIAf4RO9o0-QyeZnxM9k7DDxyEgKfpXwIge5S8kgRGNdRNUmxrg/?imgmax=800)
書籤多了一個「授權政大」了。
![2015-07-25_005901 - Copy (3) 2015-07-25_005901 - Copy (3)](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq-9-UVBSIb2gzXM_7PqeuN7A0UowWgjdIbk5UaL7MFEi7EpQcWUorltruKYkGp5-LvKkNpVZHgWw5dUWUjmoli1FkJCNx6CiD0NmKRC3IVU46GXHrnhrVQchnqBTzUofCYukjRw/?imgmax=800)
然後按下「開啟設定頁面」按鈕。
![2015-07-25_010457 2015-07-25_010457](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg98E6EIQHvEpl4ktju6fdYZH3rcAL1DC264lRr6FrG20xqzUj3hqEWyZ-XV7KCsFYked8Bcc9VNdVcZO2Cp2hdjLEzN70gO_PUh7SbQXWTiEVjtmZ8AntnLcBUsEvX8VWV13Onkg/?imgmax=800)
開啟了ORCID的帳號管理頁面。
![orcid2 orcid2](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8xZ0H8GUBSTxehySRvbJ-xZigXDu7o89-I4XvSjJl7oyvgnIyXAmJ4nB1GgkhMMlk8aWNcMQu0NEi5z7wKVjC9L0scrEgjWDoskUvK2SVFqS12kCqHEL7Z3J3lmiyzpPpQnft8w/?imgmax=800)
點下書籤列上的「授權政大」按鈕。
![orcid3 orcid3](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO9svrGEu7pkAHfhmW9MKMJp0o5OVlfFbs17BfWBHmxYJeAC2oZmIumIKIW5Yrny2srHfZFfmW1NG4pCfxxmb9GoCatLiXShPEOUDiwaS6PkyB0mE_aqXq3VbCjeUqpAHLODW6-g/?imgmax=800)
接下來會跳出一個對話框,因為授權需要密碼,請輸入您ORCID的密碼。
![2015-07-25_010704 2015-07-25_010704](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9s5aCHIBp_op00VZbexV3WhKiFvTMKmnXvtNgAWfqIRaN4CkknONXZceJH6fOmrBGaDRG-g6q351PpE1oky-JrxHd45fePDeX22YrU56gvsrTux67MGMnoQyrjSyQz0VRfhImbQ/?imgmax=800)
授權成功,會跳出即將關閉視窗的訊息。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvSSO7q8DLao7yZ-_mtO-nqXB8HKQ80AstOmhIFWmsiV7oOUsT3qzF5cOd4A-bFgnWxam5kKS0LheJ3TqrDQR5hbwtG7gN0lcHoEcFjdDStRbzrP9bSiuG9GVB69UhPRqHi0hEAg/?imgmax=800)
這樣就授權完成了。擁有授權的一方就可以用信任託管的方式幫忙建置ORCID的資料,做法請看我之前寫的「以機構身份管理其他研究者的著作:ORCID的信任託管功能」。
功能展示 / Demonstration
安裝教學 / Installation Instruction
接下來我要來說明如何安裝布丁式ORCID整合方案。這是給網頁工程師看得部分,如果你看不懂,那也別在意。
首先,我們會有一個系統表單網頁的網址,此例中的網址為「http://your-server/form.html」(會在後面用到),以及該網頁的原始HTML碼。例如:
<input type="text" name="email" value="" />
<input type="text" name="orcid_id" />
然後我們要底下加入以下程式碼:
<script type="text/javascript" src="https://googledrive.com/host/0B3_qgRmbvvZ1RmhGYmVFeTExblU"></script>
<script type="text/javascript">
ORCID_puli_utils.init({
inputs: {
email: "[name='email']",
orcid_id: "[name='orcid_id']"
},
app: {
client_id: "APP-xxxxxxxxxxxxxxxx",
client_secret: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
redirect_uri: "http://your-server/form.html",
},
employment: {
orcid: "0000-0002-5496-8565",
disambiguated_id: 32787,
source_id: 34913,
keyword: "National Chengchi University",
},
message: {
connect_button: "建立或連接ORCID ID",
bookmarklet: "授權政大",
bookmarklet_usage: "請拖曳上面授權按鈕到書籤列<br /><img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IFr0Z9Qu-JIR3vi2UFkfW5mZdy9WgzKo1FIl7qU6nuoze36JOmBxutZ0eiOcjnzrSUduGXpWoAXiU5qoJvkDd56Abts2y91UFFcOjw5apmyUy4GwFskZ-LF4LY5oZPgu3npi_Q/' style='border:1px gray solid' />",
open_account: "開啟設定頁面",
open_bookmarket: "請點選授權按鈕。<br /><img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLbMa53HgWhdm1Lq4mOD-SRzkMmF55D6SwTOiBKR3MPqq2L0pgxK9T6jtuiZgJxwas2tXY3Sj52HIXcxw5qvA5O58JhwBZ2gwzatVJ18iETssbgtYrvty7bZ6GlHAP9jFbS93wJg/' style='border:1px gray solid' />",
input_password: "請輸入您的密碼 <br /><img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtNZ37lCN_qWYT5TUjW8ul6VsiDJx5_cxv4yY7CNOqc_OLboP_TsSNiDgXbNR7EHYnq7QmtLlxOYLpW7no-JNQjfcHyfPz8UBmac1A_MWVFoUK-e511ryaXnd5uP_2lIDy5KtUww/' style='border:1px gray solid' />",
prompt_hint: "請輸入您的密碼",
prompt_error: "密碼錯誤,請再次輸入您的密碼",
alert_success: "授權成功,視窗即將關閉。",
delegated: "已經授權"
}
});
</script>
這邊總共有3處參數需要設定,我用顏色標示,各別是綠色的信任託管對象、藍色的Public API設定、紅色的機構資訊、紫色的授權按鈕。這些資料取得的方式不一,以下一一說明:
綠色的信任託管對象設定
![2015-07-25_013934 2015-07-25_013934](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJUWKXwj-0Rk-uhmq3L8mPW6uwvFvj8F7fK7ehIFAcQOGAhOMtwjXCp3iGgRaqiZacOLO47UdLxPHRtT5T6h6mEFXQS-rFHeg_KGby4IkMw9QAAEj6gXuvJfJhlw84BugEufbhyg/?imgmax=800)
首先,我們先要有一個代表機構的公用ORCID帳號。這個帳號就算不是ORCID的機構會員也無所謂,用一般的方式免費註冊一個ORCID的帳號就可以了。
![2015-07-25_014533 2015-07-25_014533](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCzFa9LDHriFo0j4tGljcwE-9Z11xlfI89CQhDlQrEnUSddJaJsQcwiLc1acX3Ow4xYXgELQzf-phzRYdbTPWpFE1mq5iUOWJrJMkK9r-b1wcAza7i4Ffe4VmgUQ-Anzg4LNsi1g/?imgmax=800)
註冊之後,你就會獲得一個ORCID ID。我註冊了一個測試用的ORCID帳號,ORCID ID就是「0000-0002-5496-8565」。
藍色的Public API設定
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNqSkAk0ZbllgF0DOnbJsIcirpSSZ8G9hmkKL6Pfs-kclIpmyW1vWAwPAYk5c7HpL5D1ZZ2efmw3JbTBnx0brB43W3S3JTDMheYqSLWbnUsgm6l1_zFUuF-V1PQsJ-y3QxeFAe1g/?imgmax=800)
接下來我們要設定供網站登入用的Public API。這邊要設定三個參數: 1. client_id、2. client_secret、3. redirect_uri。這三個參數都必須在ORCID網站上的開發者工具裡面設定。
![2015-07-25_015048 2015-07-25_015048](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_fEpgAWeoZOcW6EzXo8qk9Dd6g5HTp9YdL7RYyxHhe8Jl6Nu7Tsj6Cau4GbMz1KpH_eUrVpIu3Y8joM98aVCMD9DCQ0eaykQUoXUIHpXiyNqg5dgMEbskexVJD2JteYbMwBX0qA/?imgmax=800)
點下開發者工具頁面中間的「Register for the free ORCID public API」。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV7ajW736XHV_zLivUgrjxLy9nRJqzLjCBZio7bvqH24NxHs8n60jY_ZCC0j6bEjecI6HMxvOw_VNkWD1Mhz1V8au6f8-dkxX1NaSsl9TcVlPzlMZDrIP92c2yhLVuQxwe24J1Og/?imgmax=800)
確認接受條款。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYOF8o4ilPGVnnGBCnHd168OcAG8E62vs9lx26WLbr_twH4rAo2-_nlhz7lFqvee2eE0bAC9eeZtAiNQNsHKE-XacOkx8qXePLp4bYjwkBwl52MLo0eWEb7NJa_bLqMpbuk5q48A/?imgmax=800)
然後設定你的網站資訊,包括網站名稱(Name of your application)、網站網址(Your website URL)、網站介紹(Description of your application)、返回網址(Redirect URIs)。比較需要說明的是返回網址,請設定系統表單網頁的網址,此例就是「http://your-server/form.html」。然後按下右下角的磁片按鈕來儲存。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigNGEzbJYik79JG6pbNFVq80sM-MQQg-v7SHG-WFbW7XgxwD2-M7yY8EfgMgphL2y0-RV81M0fChWWJF949J7x9ZC1XN0En9qFO2dMttBdoAMUglzzgmLQB33eimEd3dquiMFIBg/?imgmax=800)
儲存之後會回到原本的開發者工具頁面,按下「Show Details」來顯示詳細訊息。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3RBCs5JF9XdTONBNQlO5JrUf24v0fcWfVPmgKFK8PRyf1KwoqODKIGC2Y6UQExZxYXmE2d0aRnAR-cj1QHi3JzEek7BKtgrk75ANzARrmWD7pvUhyEBdjv8DxbUCmiHcI_5WCGg/?imgmax=800)
這邊可以找到Public API所需要的三項參數。在Redirect URIs裡面找到返回網址redirect_uri參數;在Client ID找到client_id參數,開頭會是「APP-」;在Client secret可以找到client_secret參數。(一般是不能公開這個參數)
這樣子Public API所需要的參數就設定完了。
紅色的機構資訊
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFXuQ8xFEJhhRXs1bgs65XvOXaCjX8fBtqQLn6pWqsqpDFn-SGbdkBR3lm8zBe2sYcCfA5nnjc5nCqQwUvnJATYNMKaWRAG1NQ3xc2M3fS3tk9SxFrn4ldcMy43JKotJG6U-jzDw/?imgmax=800)
接下來是機構資訊的設定。這邊有三個參數要設定,以政大為例:
1. disambiguated_id: 32787
2. source_id: 34913
3. keyword: “National Chengchi University”,這一項可以自行設定。
機構的disambiguated_id跟source_id是比較難以取得的參數,以下說明如何使用Google Chrome瀏覽器來取得機構的這兩種參數。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJtw-t5I2_h8kd054QgL4ktTVAiE0hxQncjFqf0XtYmumVNow-el9lsvm9lubOSwOkl48q1V27pTsLZ69sNyUzT-q2KYqDvjDyrGOuRV6FK_ik0XqnBGl0cIecglPjmBLnZjdRDw/?imgmax=800)
首先我們要進入到你自己的ORCID頁面,然後在Employment裡面進入「+ Add employment」裡面的「+ Add manually」。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2R_LrzKO8WYjYQK5O9Ry9uKZMmItCenrP07u3lU0UEQWmx19pdQan-qUPekp4QuHHc4hWNytFNbaeXwUa03nbZ564tokOkLXqUH26EuSzMxaPmjAua6DAJFTV-H1-uJ1A5ixMQA/?imgmax=800)
同時開啟Google Chrome的偵錯面板,切換到Network分頁。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQS_hFXUc41QaBUKib8pfzCMsmKbYrH1Hdp__S_bphPx2hyphenhyphenyjzUsbLvXZOS2C8fKTkKDm1M3Xn86E7SPfHBD7FBA6pK-fQ11vK5kv30nGxuWjDh8rPD1cXm2EcN6BpBPNO1933Jg/?imgmax=800)
在Institution/employer中輸入資訊時,就會自動帶出機構的資料。找到我們目標的機構,例如國立政治大學就是「National Chengchi University」。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiadPkKcUFqlIMnrhyBbJZe1_232HkFrFW__e2zAy9rb9lZXRBPxCzIbLCRDrUsuPX1XsnnzMnz2E3zsngK0h5i7hEu7iPIyHTKHIHg83HgkwC53JQdrfs27Wc8DbIm7Ay8evOGvQ/?imgmax=800)
點下「National Chengchi University」的時候,注意Network分頁讀取資料的網址,有個「32787?_=1437762980098」,其中32787就是disambiguated_id。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKBx5x9j8etoie6e2mrhKnfwjWoPuoFvTUJosNh1KV8OLQuaSgMpvZOiva_U7ETHdQAqCAbKFgOlm9Ry6RGgbl_CORJAgyXpckeM-M3Ktq5wxHqN9YXAVzgXS0VXxlTKzdtIiffg/?imgmax=800)
新增機構之後,Network分頁中會讀取一個叫做「affiliation.json」的檔案。點進去看該檔案的細節。
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghf9ksgrW8i-VtCbGpLm12ZhygjpyE2wZPWJdhvGf0SARttI4ImdaLA699vPlHxMPpsT8hDvSj4S2XjcW8Ef_-E-FetQZJMtq0qshy6poShI4WcX1O4wxwnFc0aOqFupRwkRsNPw/?imgmax=800)
在Request Payload裡面找到disambiguatedAffiliationSourceId: “34913”,其中34913就是 source_id。
雖然過程有點麻煩,但這樣子就設定完機構的參數了。
紫色的授權按鈕
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisi9RtP1u53z5_J0SfMzcuTEwFQ_q0g-B0aodPtHFd8aL8TM-kOyto6V8Qiy_P0jwQaeRU0saVfj-s8yTMERIpgny9M9Vk27qYfECUJv9o6szzlvfTw26ihu0bGGNJ-e1fG-lmZQ/?imgmax=800)
最後是「授權政大」的按鈕。這個按鈕可以任意修改文字訊息。事實上,message裡面的資料都可以任意修改,不會影響布丁式ORCID整合方案的運作。但是修改時必須遵照JSON的格式就是了。
結論:暫時的方案 / Conclusion: A Temporary solution
布丁式ORCID整合方案終歸來說只是一種暫時使用的權宜之計,特別適合不想要花錢買一個系統來管理ORCID(因為ORCID網頁本身就很好操作了,實際上不太需要額外買一個系統來管理)、也不想要花錢加入機構會員(因為機構會員的Member API一樣要額外的系統才能運作)的機構。
ORCID是一個稱職的OAuth系統,可說是學術界的Google Account一樣。可是它作為著作目錄權威檔的角色來說,本身有很多問題在,詳細可以看我之前寫的「令人意外!ORCID目前並沒有自動跟資料庫同步」。對於ORCID,除了註冊帳號之外,目前似乎並沒有深入建置資料的必要性就是了。
(more...)
Comments