C# ,

  • DefaultValueAttribute 類別

    DefaultValueAttribute 類別 有時候真的會讓人搞混,

    DefaultValueAttribute 通常會相等於變數的初始值,

    但是它不是用來設定變數初始值的,你得自己設定變數的初始值。

    那DefaultValueAttribute 是用來做啥的?

    其實比較像是在聲明一個變數的初始值,

    讓你在變數改變其值後,有辦法透過DefaultValueAttribute回復到原來的初始值,

    還有一種比較常見的用法是在於物件的序列化與反序列化,

    對於有設定DefaultValueAttribute 的變數而言,

    當其值等於初始值時,其實是可以考慮不把它序列化的,

    而是在反序列化的時候利用DefaultValueAttribute 取得其值。

    如果你用過JSON .NET,

    她的序列化設定當中有個DefaultValueHandling設定,

    大概就是相同的東西。

    1465731642491.jpg

  • Google Oauth2 API 取得認證碼程式片段

    Google Oauth2 API 取得認證碼程式片段,google其實有提供client library,所以其實可以直接使用library來完成下面的工作。

    這程式片段是Installed Applications的認證過程,其他狀況會有些微差異,不詳述。

    簡單說一下Installed Applications認證的過程:

    跟Oauth伺服器請求特定權限

    =>google詢問使用者是否願意開放此權限給應用程式

    =>使用者同意

    =>google傳回存取碼

    =>利用純取碼向OAuth伺服器請求授權碼

    =>伺服器傳回授權碼

    =>應用程式利用授權碼請求API(執行API指令)

    HtmlAgilityPack 是用來解析HTML檔的類別,需要上網另行安裝。

    這個範例是用來取得blogger存取權限的認授權碼,所以在取得存取碼的網址中,scope的值是Blogger權限。

    下面網址可以用來取得各種google API權限:

    https://developers.google.com/identity/

    protocols/googlescopes#analyticsv3

    注意一點,請求認證的網址是https://開頭的。

    由於Installed Applications不會設定redirect_uri的值,所以我們使用預設的3種中的一種urn:ietf:wg:oauth:2.0:oob。

    client_id 是妳應用程式當初申請憑證的client_id。

    當按下按鈕時會進入使用者同意的畫面