2012-07-27 150 views
0

我正在用PHP構建一個CRM Web應用程序,該應用程序將從用戶的所有電子郵件和社交媒體帳戶中提取,並允許他們閱讀並回復所有電子郵件或撰寫新電子郵件。目前,我只是試圖使用OAuth 1.0與Gmail合作,但我遇到了一些麻煩。如何從Web應用程序訪問用戶的Gmail帳戶?

我可以成功獲取請求令牌和授權令牌,一旦用戶授權我,Google會重定向回我的應用程序,就像它應該...但現在我該如何真正從用戶的收件箱中提取消息? This link表示我需要使用用戶的電子郵件訪問其收件箱,但如何獲取用戶的電子郵件地址? Google對我返回的oauth_verifier和oauth_token有什麼用處?

+0

難道你不會從用戶那裏得到它嗎?我不明白你的意思。如果我理解正確,那麼您就可以構建更基本的Outlook Web Access。那麼你不應該有用戶的電子郵件(因爲,你知道,他會需要它來設置)? – Palladium 2012-07-27 20:41:14

+0

主要問題,亞倫,你沒有顯示任何代碼。向我們展示您迄今爲止所嘗試的內容,以便我們有一個參考點,在該參考點中我們可以指導您到需要去的地方。否則,你要求我們從頭開始,給你提供信息,你會不必要地迴應「你好,但我知道艾瑞迪!」。點擊[編輯]鏈接將缺少的信息添加到您的問題。祝你好運! :) – jmort253 2012-07-27 20:42:36

+0

不,用戶永遠不會在我的應用程序中輸入他們的電子郵件或密碼,我想保持這種方式。根據我的理解,這就是OAuth的觀點。用戶點擊我網站上的一個鏈接,將其發送到他們登錄的Google頁面,然後Google重定向到我的應用程序並使用他們登錄帳戶的訪問令牌。像context.io和nimble.com這樣的網站這樣做,所以我知道這是可能的。 – 2012-07-27 20:48:27

回答

0

我想通了。有兩個步驟:

首先,在實際訪問任何用戶信息之前,必須將請求令牌升級爲訪問令牌。這是OAuth流程的第三步(谷歌頁面上的用戶授權是第二步);我對最後一步是什麼感到困惑,並且感覺用戶正在完成Google頁面上的第二步和第三步。 Google's OAuth Playground幫助明確了。無論如何,在Google(或您的服務提供商)將用戶重定向回您的應用之後,您可以使用oauth_verifier和oauth_token將請求令牌升級爲Access令牌。不要忘記使用您的oauth_token_secret(除了您的consumer_secret_key)來爲最後一個請求生成簽名!這個小細節花了我很多時間!有關如何正確執行此操作的更多信息,請參閱this question的答案。

現在,如果您和我一樣,並希望讓Google處理用戶使用哪個電子郵件地址進行登錄(而不是將這些信息自己收集到您的應用中),則您需要提出其他請求才能訪問用戶的收件箱。在我看來,這是Google文檔真正失敗的地方,因爲您似乎需要用戶的Google ID(gmail地址)才能使用他們的任何API,但是可以完成OAuth進程,而無需從用戶那裏獲取。這就是我的困惑,也是我的問題。我還沒有100%清楚你應該怎麼做,但我現在所做的是將'https://www.google.com/m8/feeds/'添加到我的示波器,並調用'https://www.google.com/m8/feeds/contacts/default/full?max-results=0'以獲得一個空的xml聯繫人列表,該列表碰巧包含用戶的Gmail地址。然後,您可以解析XML以獲取用戶的電子郵件並開始您的快樂方式。使用'https://www.googleapis.com/auth/userinfo#email'作用域來獲取用戶的電子郵件也是可能的(也可能是最好的),但我還沒有嘗試過。

相關問題