2016-03-01 44 views
0

我正在爲我的應用程序構建一個手動登錄流程,它集成了一些Facebook功能。 我需要檢查用戶的當前access_token何時到期。 API紀錄片說我應該這樣做:Facebook Api無需硬編碼應用程序祕密檢查訪問令牌

GET graph.facebook.com/debug_token?

的input_token = {令牌到檢查} &的access_token = {APP-令牌或管理員令牌}

所以我沒有在C#:

 Uri inspectAccessTokenUri = new Uri("http://graph.facebook.com/debug_token?input_token="+access_token+"&"); //IDK which value should have the last parameter 
     HttpWebRequest checkToken = (HttpWebRequest)WebRequest.Create(inspectAccessTokenUri); 
     var response = await checkToken.GetResponseAsync(); 
     Stream stream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(stream); 
     string data = reader.ReadToEnd(); 
     Debug.WriteLine(data); 

最後一個參數應該是應用程序令牌:

但是:當然,我擡頭一看如何獲取應用程序令牌和Facebook表示:

請注意,由於此請求使用您的應用程序密碼,因此它絕不能是在客戶端代碼或可反編譯的應用程序二進制文件中創建的 。 重要的是你的應用程序祕密永遠不會與任何人共享。 因此,只能使用服務器端代碼進行此API調用。 (Facebook的圖形API文檔1.1.16)

所以我的問題:我可以檢查該令牌,沒有應用程式令牌或硬編碼的應用程序,祕訣是什麼?

回答

0

如果應用程序令牌已過期,您將收到facebook響應錯誤。你可以捕捉這個例外來處理你想要的情況。這樣你就不需要用你的應用程序祕密提出請求。 你也可以使用包含AccessTokenData的fb-uwp sdk來認證用戶

+0

是的,我會這麼做的。我選擇了構建手動登錄流而不使用sdk。 –

1
  • 應用祕密通常由服務器端應用使用,我們不使用它在我們的UWP應用中,它可以被反編譯。

  • 閱讀關於FB Graph Debug-Token的官方文檔,這隻能在您調試您的應用時使用,例如,如果您想檢查關於給定訪問令牌的元數據,在您發佈應用後,您的代碼將不會繼電器。

  • 在UWP應用程序中,我們使用WebAuthenticationBroker類連接到OAuth提供程序,如Facebook,Flickr,Google和Twitter。在使用OAuth連接期間需要維護。例如,過期信息包含在訪問令牌中,當我們使用OAuth協議進行認證和授權時,我們需要在訪問令牌過期後刷新訪問令牌。

由於這些條件,您可能會重新考慮您可以在UWP應用程序中做什麼以及應該選擇哪種API。

相關問題