問題タブ [google-authentication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - アプリ * および * ウェブサイトの OAuth2 による認証
主にアプリ経由でアクセスする Web サイトを開発しており、ユーザー登録と認証に OAuth2 を使用したいと考えています。これは Android アプリなので、Android で適切な UI を提供する Google の OAuth2 の使用を開始します。
Google は、「アプリケーションのユーザー認証を外部委託する方法として、Google の認証システムを使用することを選択できます。これにより、ユーザー名とパスワードのストアを作成、維持、保護する必要がなくなります。」と述べています。それが私がやりたいことです。ただし、すべての例を調べてみると、ウェブサイトまたはアプリが Google のサービスに対してユーザーを認証することに関するものしか見つかりません。
実際、アプリ (「クライアント」) を Google の OAuth2 に登録しようとすると、Web サイト クライアントと「インストール済み」クライアント (モバイル アプリ) のオプションがありますが、両方はありません。2 つの個別のクライアントを作成することはできますが、OAuth2 ドラフトを読み、問題が発生すると思います。これについて説明します。
これが私がそれがどのように機能するかを想像した方法です:
- ユーザーは MyApp に個人データへのアクセスを要求します。
- アプリは Android の
AccountManager
クラスを使用して、Google の API のアクセス トークンを要求します。 - Android がユーザーに「アプリ 'MyApp' が Google の基本情報へのアクセスを求めています。よろしいですか?」と表示されます。
- ユーザーは「はい」と言います。
AccountManager
電話に保存されている資格情報を使用して Google の OAuth2 サーバーに接続し、アクセス トークンを要求します。- アクセス トークン (緑色の線に続く) が返されます。
AccountManager
アクセス トークンを MyApp に返します。- MyApp は、アクセス トークンを含むユーザーのプライベート データの要求を MySite に送信します。
- MySite は、アクセス トークンを使用してユーザーを確認する必要があります。ここで説明されているように、Google を使用してトークンを検証します - 「Google、このトークンは有効ですか?」。
- さて、私が実現したいのは、Google が「はい、あなたにそれを与えたのは確かにそのユーザーです」と言うことですが、実際には (OAuth2 ドラフトと Google のドキュメントに基づいて) 「いいえそのトークンは MyApp に対してのみ有効で、あなたは MySite です。GTFO!".
では、これをどのように行うべきですか?また、「OpenID を使用する」、「OAuth2 を使用しない」、または同様に役に立たない回答を言わないでください。ああ、私はくだらないポップアップでAccountManager
はなく、素敵な UI を使い続けたいと思っています。WebView
編集
Nikolay からの暫定的な回答 (動作したら報告します!) は、実際には動作するはずであり、Google のサーバーはアクセス トークンがどこから来たのか気にしないというものです。私には少し不安に思えますが、うまくいくかどうか見てみましょう!
アップデート
このパターンを Google ではなく Facebook で実装したところ、完全に機能しました。OAuth2 サーバーは、アクセス トークンがどこから来たかを気にしません。少なくとも Facebook はそうではないので、Google もそうではないと思います。
それを考えると、アクセストークンを保存するのは非常に悪い考えです! しかし、Facebook/Google のサーバーにアクセスしてすべてのリクエストの認証を確認する必要もありません。すべてが遅くなるためです。おそらく最善の方法は、サイトのアクセス トークンが検証されるときに配布する追加の認証 Cookie を追加することですが、より簡単な方法は、アクセス トークンをパスワードのように扱い、そのハッシュを保存することです。アクセス トークンは非常に長いため、ソルトする必要もありません。したがって、上記の手順は次のようになります。
9. MySite は、アクセス トークンを使用してユーザーを確認する必要があります。最初に、ハッシュされた有効なアクセス トークンのキャッシュをチェックします。トークンのハッシュが見つかった場合、ユーザーが認証されていることがわかります。それ以外の場合は、こちらで説明されているように Google で確認します。Googleでは、「Google、このトークンは有効ですか?」
10. Google がアクセス トークンが無効であると判断した場合、ユーザーに GTFO に伝えます。それ以外の場合、Google は「はい、それは有効なユーザーです」と答え、登録済みのユーザー データベースを確認します。その Google ユーザー名 (Facebook を使用している場合は Facebook ID) が見つからない場合は、新しいユーザーを作成できます。次に、アクセス トークンのハッシュ値をキャッシュします。
openid - Google Identity ToolKit: createAuthUrl - 無効な識別子
アプリケーションに Google Identity Toolkit を実装する作業を行っています。独自の顧客要件 (FISMA) のため、App Engine は受け入れられないプラットフォームです。
Google で可能な限りシームレスなシングル サインオン プロセスが必要です。ボタンもポップアップもありません。リダイレクトはわずかです。API の createAuthUrl メソッドから始めるのがよいと思います。しかし、私はそれを機能させることができないようです。私は何か間違ったことをしているに違いありませんが、私は完全に立ち往生しています。
一緒に投げたコードの要点を含めました: https://gist.github.com/5bc9bfb03df34ca93cf3
google-authentication - Googleからアプリを承認しない
以前にGoogle情報の使用を許可したアプリの1つを許可解除しようとしています。
TwitterとFacebookでは許可を取り消すことができます。Googleでどのようにそれを達成しますか?設定を見回してみましたが、役に立ちませんでした。
oauth-2.0 - Google サービス アカウントと Google Play API を使用している人はいますか?
Google Play API サービスを使用する必要があります。「サービス アカウント」認証方法を使用して認証トークンを取得しようとしましたが、応答として常に「400 Bad request」と json: "error": "invalid_grant" が返されます。
Google Play Api をスコープとして、C# をプログラミング言語として、この認証方法を使用している人はいますか?
既存のライブラリまたはこのガイド ( https://developers.google.com/accounts/docs/OAuth2ServiceAccount#libraries ) および他のユーザーの提案に従って自分で実装するためにあらゆる場所を検索しましたが、機能しません
ここにコードがあります
および base 64 にエンコードするためにここで指定されたメソッド: Utils.Base64Encode()
次に、以下のコマンドを呼び出すと、{"error":"invalid_grant"} が返されます。
(簡潔にするためにエンコードされた JWT を縮小)
c# - GoogleAPIのトークン取得リクエストはinvalid_requestを返します
c#を使用してGoogle APiのaccess_tokenを取得しようとしていますが、常にエラーメッセージinvalid_requestが表示されます。私のコードがあります:
https://developers.google.com/accounts/docs/OAuth2WebServer#offlineを使用しています
windows-phone-7 - Google認証用のwpアプリに認証コードを取得する方法は?
私のWP7.5アプリでは、ユーザーをGoogle Webページにリダイレクトしました。そこで、アプリに自分のアカウントへのアクセス許可を与えるように求められ、ユーザーは[はい]をクリックしましたが、コードがあり、ユーザーが想定されているページにリダイレクトされますそれをコピーしてアプリに貼り付けます。
応答は、次のコードをコピーしてアプリケーションに切り替え、そこに貼り付けてください: 4/3oHAHtqSk1CqA3S8HlEsuQRaE08e.4nCBpXhR-R8WgrKXntQAax02U4CwcgI - 認証コード
ユーザーがOKを押したときに、そのコードでアプリに戻りたいのですが、それを行う方法はありますか?
-シェイク・アブドラ
google-analytics - 「Google_Exception」と「認証後にサービスを追加できません」というメッセージ
Oauth 2.0 を使用して、Google アナリティクスで WP プラグインに取り組んでいます。
この 1 つの問題を除いて、すべての認証とデータ プルは正常に機能します。新しい Google 認証コード (例: "4/-xbSbg....") を初めて取得し、認証してから、新しい Google_AnalyticsService() オブジェクト、それはエラーを投げ返します:
「Google_Exception」と「認証後にサービスを追加できません」というメッセージ
これは 109 行にあります: http://code.google.com/p/google-api-php-client/source/browse/trunk/src/apiClient.php?r=258
このコードを呼び出すページを更新すると、問題なく動作します。つまり、check_login() の最初のブランチは問題ありませんが、認証呼び出しが正しく機能していません。
最初に認証を行ったため、コードが不平を言っているように見えますが、メッセージには、それを行うべきではないことが示されています。コメントとコードは、私の問題が何であるかを本当に混乱させました(ログインコードはまだあまりきれいではありません、私は理解しています)。
重要な注意: インストール済みアプリに Google 認証を使用しているため、ユーザーに認証コードを要求し、それを使用して認証トークンを取得しています。
get_option()、set_option() & update_option() は問題の一部ではない WP ネイティブ関数です
これが私のコードです:
oauth - 認証コードのアップグレードは決定論的ですか?
「//コードをアップグレードした後、更新トークンを取得できない場合がある」というコメントを読みました。サンプルの DrEdit コードhttps://code.google.com/p/google-drive-sdk-samples/source/browse/java/src/com/google/drive/samples/dredit/CredentialMediator.javaの 292 行目。
「たまに」ってどういう意味?リフレッシュ トークンが付与される状況と付与されない状況を説明したドキュメントはありますか?
objective-c - Googleクライアント-Objective-Cにログイン
googleclientのコードを書き込もうとしています-objective-cにログインします。「https://www.google.com/accounts/ClientLogin」からメールアドレスとパスワードで認証を取得し、POSTER(firefox)で正常にログインできます。
Objective-cのコードを書くと、ログインできず、エラーコード401が表示されます。
誰かが私が間違っていることを助けてくれますか?これが私のコードです。
oauth-2.0 - What causes intermittent Invalid Grant
I'm getting the following
This only happens in my production Appengine instance, (ie. not on dev server), and it only happens for the email address that I use for testing on both dev and production.
My working hypothesis is that it is something to do with the user being granted a refresh-token on the dev server which is somehow interfering with the stored refresh-token on the prod server.
Can anybody confirm this explanation, and is there a best practice on how to deal with this exception?