:::

讓系統整合ORCID註冊、登入與信任託管授權:布丁式ORCID整合方案 / Integrate your system with ORCID’s registration, login and trusted parties: Pudding style solution

2015-07-25_012234

這篇是給想要整合ORCID的系統採用的方案。除了以ORCID建議的方式來設計OAuth登入功能,我還用bookmarklet來製作信任託管授權功能


功能簡介 / Introduction

現在很多系統都想要整合ORCID,但是大部分系統的整合方式都只是提供一個輸入框,要作者自行註冊再自己複製ORCID編號。可是現在已經是OAuth的時代,我們可以採用ORCID建議的三方登入來建置登入按鈕。

2015-07-25_003703

有注意到上面這張圖裡面顯示的「布丁布丁吃什麼?」要求取得登入訊息的資訊嗎?這個方法很簡單,不必動到任何伺服器端的程式碼,只要用JavaScript在前端執行就能夠搞定。

操作說明 / Usage Instruction

以下介紹如果在尚未登入ORCID,也沒有註冊ORCID的情況下使用此方案的過程。

登入與註冊 / Login or registration

image

這個方案是為了整合既有的系統。系統通常會有Email的輸入框,也會有ORCID ID的輸入框。

image

如果有加入布丁式ORCID整合方案,就會變成上面的樣子。

2015-07-25_003703

按下「建立或連接ORCID ID」會跳出要求ORCID登入畫面。你也可以在該畫面的「Don't have an ORCID iD? Register.」切換成註冊畫面。

2015-07-25_005901 - Copy

登入成功之後,該視窗會關閉,然後原本的視窗中會抓到登入之後的ORCID ID。

授權 / Add trusted party

接下來我們要加入信任託管的授權。

2015-07-25_005901 - Copy (2)

請照著下面的指示,把「授權政大」(這個按鈕的字可以自訂)拖曳到書籤列。

image

書籤多了一個「授權政大」了。

2015-07-25_005901 - Copy (3)

然後按下「開啟設定頁面」按鈕。

2015-07-25_010457

開啟了ORCID的帳號管理頁面。

orcid2

點下書籤列上的「授權政大」按鈕。

orcid3

接下來會跳出一個對話框,因為授權需要密碼,請輸入您ORCID的密碼。

2015-07-25_010704

授權成功,會跳出即將關閉視窗的訊息。

image

這樣就授權完成了。擁有授權的一方就可以用信任託管的方式幫忙建置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='http://lh3.googleusercontent.com/-JAjetUuBu6c/VbKNIq_oLVI/AAAAAAACYbM/VQujuHiLQdM/orcid1_thumb%25255B1%25255D.png' style='border:1px gray solid' />",
        open_account: "開啟設定頁面",
        open_bookmarket: "請點選授權按鈕。<br /><img src='http://lh3.googleusercontent.com/-5nG84mlwL4M/VbKNLhucyKI/AAAAAAACYbc/vTY8lJcgnUA/orcid2_thumb%25255B2%25255D.png' style='border:1px gray solid' />",
        input_password: "請輸入您的密碼 <br /><img src='http://lh3.googleusercontent.com/-yJLdDHowcP4/VbKNOgRqFQI/AAAAAAACYbs/qDu9ypACb0g/orcid3_thumb%25255B2%25255D.png' style='border:1px gray solid' />",
        prompt_hint: "請輸入您的密碼",
        prompt_error: "密碼錯誤,請再次輸入您的密碼",
        alert_success: "授權成功,視窗即將關閉。",
        delegated: "已經授權"
    }
});
</script>

這邊總共有3處參數需要設定,我用顏色標示,各別是綠色的信任託管對象藍色的Public API設定紅色的機構資訊紫色的授權按鈕。這些資料取得的方式不一,以下一一說明:

綠色的信任託管對象設定

2015-07-25_013934

首先,我們先要有一個代表機構的公用ORCID帳號。這個帳號就算不是ORCID的機構會員也無所謂,用一般的方式免費註冊一個ORCID的帳號就可以了。

2015-07-25_014533

註冊之後,你就會獲得一個ORCID ID。我註冊了一個測試用的ORCID帳號,ORCID ID就是「0000-0002-5496-8565」。

藍色的Public API設定

image

接下來我們要設定供網站登入用的Public API。這邊要設定三個參數: 1. client_id、2. client_secret、3. redirect_uri。這三個參數都必須在ORCID網站上的開發者工具裡面設定。

2015-07-25_015048

點下開發者工具頁面中間的「Register for the free ORCID public API」。

image

確認接受條款。

image

然後設定你的網站資訊,包括網站名稱(Name of your application)、網站網址(Your website URL)、網站介紹(Description of your application)、返回網址(Redirect URIs)。比較需要說明的是返回網址,請設定系統表單網頁的網址,此例就是「http://your-server/form.html」。然後按下右下角的磁片按鈕來儲存。

image

儲存之後會回到原本的開發者工具頁面,按下「Show Details」來顯示詳細訊息。

image

這邊可以找到Public API所需要的三項參數。在Redirect URIs裡面找到返回網址redirect_uri參數;在Client ID找到client_id參數,開頭會是「APP-」;在Client secret可以找到client_secret參數。(一般是不能公開這個參數)

這樣子Public API所需要的參數就設定完了。

紅色的機構資訊

image

接下來是機構資訊的設定。這邊有三個參數要設定,以政大為例:

1. disambiguated_id: 32787

2. source_id: 34913

3. keyword: “National Chengchi University”,這一項可以自行設定。

機構的disambiguated_id跟source_id是比較難以取得的參數,以下說明如何使用Google Chrome瀏覽器來取得機構的這兩種參數。

image

首先我們要進入到你自己的ORCID頁面,然後在Employment裡面進入「+ Add employment」裡面的「+ Add manually」。

image

同時開啟Google Chrome的偵錯面板,切換到Network分頁。

image

在Institution/employer中輸入資訊時,就會自動帶出機構的資料。找到我們目標的機構,例如國立政治大學就是「National Chengchi University」。

image

點下「National Chengchi University」的時候,注意Network分頁讀取資料的網址,有個「32787?_=1437762980098」,其中32787就是disambiguated_id

image

新增機構之後,Network分頁中會讀取一個叫做「affiliation.json」的檔案。點進去看該檔案的細節。

image

在Request Payload裡面找到disambiguatedAffiliationSourceId: “34913”,其中34913就是 source_id

雖然過程有點麻煩,但這樣子就設定完機構的參數了。

紫色的授權按鈕

image

最後是「授權政大」的按鈕。這個按鈕可以任意修改文字訊息。事實上,message裡面的資料都可以任意修改,不會影響布丁式ORCID整合方案的運作。但是修改時必須遵照JSON的格式就是了。


結論:暫時的方案 / Conclusion: A Temporary solution

布丁式ORCID整合方案終歸來說只是一種暫時使用的權宜之計,特別適合不想要花錢買一個系統來管理ORCID(因為ORCID網頁本身就很好操作了,實際上不太需要額外買一個系統來管理)、也不想要花錢加入機構會員(因為機構會員的Member API一樣要額外的系統才能運作)的機構。

ORCID是一個稱職的OAuth系統,可說是學術界的Google Account一樣。可是它作為著作目錄權威檔的角色來說,本身有很多問題在,詳細可以看我之前寫的「令人意外!ORCID目前並沒有自動跟資料庫同步」。對於ORCID,除了註冊帳號之外,目前似乎並沒有深入建置資料的必要性就是了。