0

私はPHPでCRMWebアプリを構築しています。これは、ユーザーのすべての電子メールアカウントとソーシャルメディアアカウントから取得し、すべての電子メールを読んで返信したり、新しい電子メールを作成したりできるようにします。現在、OAuth 1.0を使用してGmailでこれを機能させようとしていますが、問題が発生しています。

リクエストトークンと承認トークンを正常に取得できます。ユーザーが承認すると、Googleは想定どおりにアプリにリダイレクトします...しかし、実際にユーザーの受信トレイからメッセージをプルするにはどうすればよいですか? このリンクには、受信トレイにアクセスするためにユーザーの電子メールを使用して電話をかける必要があると書かれていますが、ユーザーの電子メールアドレスを取得するにはどうすればよいですか?Googleから返されるoauth_verifierとoauth_tokenをどうすればよいですか?

4

1 に答える 1

0

私はそれを考え出した。2つのステップがあります:

まず、ユーザーの情報に実際にアクセスする前に、リクエストトークンをアクセストークンにアップグレードする必要があります。これはOAuthプロセスの3番目のステップです(Googleのページでのユーザー認証は2番目です)。私は最後のステップが正確に何であるかについて混乱し、ユーザーがGoogleのページの2番目と3番目のステップを完了しているという印象を受けました。 GoogleのOAuthプレイグラウンドそれをクリアするのに役立ちました。とにかく、Google(またはサービスプロバイダーが誰でも)がユーザーをアプリにリダイレクトした後、oauth_verifierとoauth_tokenを使用してリクエストトークンをアクセストークンにアップグレードします。この最後のリクエストの署名を生成するには、(consumer_secret_keyに加えて)oauth_token_secretを使用することを忘れないでください!その小さな詳細は私に多くの時間を要しました!これを正しく行う方法の詳細については、この質問への回答を参照してください。

さて、あなたが私のようで、ユーザーがサインインするメールアドレスをGoogleに処理させたい場合(アプリ内でその情報を自分で収集するのではなく)、ユーザーの受信トレイにアクセスする前に別のリクエストを行う必要があります。私の意見では、これはGoogleのドキュメントが実際に失敗する場所です。APIを使用するにはユーザーのGoogle ID(Gmailアドレス)が必要になるようですが、ユーザーから取得しなくてもOAuthプロセスを完了することは可能です。 。これが私の混乱を招き、私の質問のポイントでした。私はまだあなたがどのようにすべきかについて100%明確ではありませんが、私が今やったことは私のスコープに「 https://www.google.com/m8/feeds/ 」を追加して「」と呼ぶことですhttps://www.google.com/m8/feeds/contacts/default/full?max-results=0'ユーザーのGmailアドレスが含まれている空のxml連絡先リストを取得します。次に、XMLを解析してユーザーの電子メールを取得し、楽しい方法を実行できます。' https://www.googleapis.com/auth/userinfo#email 'スコープを使用してユーザーの電子メールを取得することも可能です(そしておそらく望ましいです)が、私はまだそれを試していません。

于 2012-07-31T02:08:43.253 に答える