3

我希望用戶能夠從網絡服務器和/或原生PC應用程序輸入數據,並將其轉移到他們選擇的Android設備,這與Google Play安裝在設備上的方式非常相似。應用程序服務器如何將Google帳戶關聯到用戶的設備?

我想使用用戶的Google帳戶authentication在應用程序服務器和用GCM註冊的用戶的Android設備之間建立鏈接。

我找不到任何關於如何在Google雲消息傳遞API documentation中處理這種身份驗證的任何提及,但在GCM論壇中找到了此unanswered question

我想通過他或她的Google帳戶從Web應用程序驗證用戶身份。同樣,Android應用程序也會以某種方式獲取同一個Google帳戶中的句柄,該句柄將在初次GCM註冊的同時發送到Web應用程序服務器。

然後,當用戶使用Web應用程序時,服務器提供用戶已經註冊到服務器的設備列表,以便可以提示用戶他或她想要將數據發送到哪個Android設備。

我該如何在Web服務器以及設備上完成此操作?

通過使用Google帳戶進行身份驗證以建立兩個登錄之間的鏈接後,可以使用哪些信息?

回答

4

您應使用從谷歌帳戶服務器返回registration後唯一識別每個用戶的user_id。電子郵件地址不應該被用於多種原因:

  • 訪問電子郵件地址可能需要用戶額外的權限和使用,因爲信任問題您的服務/應用勸阻用戶。
  • 增加保護用戶電子郵件地址數據庫的安全責任
  • 用戶可以更改他們在Google帳戶中的電子郵件地址,但無法更改其用戶ID。
  • 用戶可以將一個電子郵件地址與多個用戶ID相關聯,因此它不一定是唯一的。

下面的序列圖顯示了從客戶端Android應用的初始登記:

initial registration from client Android app

下圖顯示了當客戶想從瀏覽器訪問自己的設備時會發生什麼:

client wants to access his device from a browser

請注意,雖然未顯示,但客戶端Android應用程序現在可以與客戶端瀏覽器進行通信,如果需要的話通過應用程序服務器。

1

您在使用GCM進行註冊時從設備上獲得的user_id應該與使用您的應用的OAuth令牌獲得的user_id相同。只需將OAuth令牌和註冊ID存儲在您的用戶存儲庫中,並將其與user_id關聯即可。

enter image description here

+0

我不確定您認爲OAuth如何在此工作。但是,據我所知,GCM沒有使用OAuth。 GCM只是用來將通知(小的)推送到設備/應用程序。因此,郵件的有效負載應包含一個URL或其他數據,以便下載您想要與您的移動設備同步的實際內容。 –

+0

好吧,我明白你要去哪裏了。它看起來像你可以訪問設備上的谷歌帳戶,檢查了這一點:http://stackoverflow.com/questions/2112965/how-to-get-the-android-devices-primary-e-mail-address –

+0

我認爲你需要3件東西在這裏。 1)當用戶通過谷歌授權你的應用程序時獲得的oauth標記。 2)該用戶的谷歌電子郵件地址。 3)GCM註冊ID。當您的應用程序獲得授權時,您可以將oauth和電子郵件一起存儲。當推送通知啓用時,您可以將註冊ID和電子郵件一起存儲。現在,您可以將oauth標記鏈接到電子郵件註冊標識(請參見上圖)。 –

相關問題