2011-12-04 46 views
4

我正在開發一個應用程序在android中提供有關不同地方的信息。我曾經在Picasa中存儲這些地方的圖片,並使用google apis檢索它們,爲此我爲持有圖片的用戶創建了一個新的Google帳戶。發送用戶名和密碼到谷歌oauth認證

問題是,當我啓動oauth進程獲取令牌時,我得到一個新的網頁,要求輸入用戶名和密碼。由於這是技術用戶,所有最終用戶都不會知道用戶和密碼。

有沒有辦法與其他OAuth的值(CLIENT_ID,secret_id,REDIRECT_URI一起發送的用戶名和密碼,...?

謝謝

+0

你正在談論哪個userid /密碼?你的用戶誰將登錄到谷歌或你的? –

+0

如果您爲場景後面的每個用戶創建Picasa帳戶,爲什麼無法代表他/她在場景後面登錄? – Meysam

回答

0

嘗試把你的照片在公衆席Picasa網絡相冊,在這種情況下,沒有訪問的照片需要用戶帳戶的

2

谷歌OAuth認證是一個三條腿的過程:

  1. 獲取荷蘭國際集團請求令牌
  2. 授權該請求令牌
  3. 交易所授權的請求令牌的訪問令牌

的用戶名和密碼,在這個過程中的第二階段是必需的,其中用戶通過使用他的登錄憑據,授權客戶端應用程序訪問存儲在Google服務器中的私人數據。

現在到了@Luis提出的問題,即是否有辦法將用戶名和密碼與其他oauth值一起發送?答案是否定的。無法在授權標頭中或在授權URI的查詢參數中發送用戶名和密碼。應始終讓用戶知道客戶端(這是您的應用程序)正在使用用戶的數據。因此,用戶總是被重定向到他/她被要求提供登錄證書的網頁。這也允許用戶針對他的私人數據對應用程序設置訪問控制方面的限制。

如果允許應用程序存儲和發送用戶登錄憑證以及Oauth授權標頭,那麼用戶永遠不會知道應用程序正在使用其私有數據,也不能爲應用程序設置任何類型的限制。

希望這個解釋有幫助。

0

如果您想避免顯示登錄對話框,可以嘗試使用AccountManager獲取OAuth令牌。這將在幕後使用已保存的Google帳戶的用戶名和密碼有效地做同樣的事情。自然,帳戶需要先在設備上註冊。這裏是一個簡短的描述,你只需要找出Picasa的權利範圍,並把它作爲令牌類型:http://developer.android.com/training/id-auth/authenticate.html

你可以得到令牌使用與ClientLogin的用戶名和密碼的認證,但是已經被棄用,所以在新項目中使用它不是一個好主意。

相關問題