そのため、アプリケーションに Google ログインを実装しようとしています。クライアント側には、Android アプリと、PHP の安らかな API サーバー (認証用の Cartalyst Sentinel 2.0) と対話する Web アプリがあります。
私は複数の問題に直面しています。
リダイレクト URI
//setting up google api client $client = new Google_Client(); $client->setClientId($CLIENT_ID_WEB); $client->setClientSecret($CLIENT_SECRET_WEB); $client->setRedirectUri($redirectUri); $client->setScopes(array('https://www.googleapis.com/auth/userinfo.email','https://www.googleapis.com/auth/userinfo.profile','https://www.googleapis.com/auth/plus.me'));
クライアントをインスタンス化するには、リダイレクト URI を提供する必要があります。クライアントが webApp の場合、クライアントとサーバー側で同じリダイレクト URI を提供しているため、問題はないようです。しかし、Android に関して言えば、リダイレクト URI はありません。リダイレクトURIが機能するため、「ポストメッセージ」をどこかで読みましたが、私には機能しませんでした。リダイレクト URI がないと、クライアントは「無効な json トークン」のエラーをスローします。
これについて何か助けはありますか?
- cartalyst_sentinel Cookieが Web クライアントからのリクエストでnullとして表示されます。
資格情報による通常のログイン (api.domain.xyz/login) の場合は問題ないようです。しかし、サーバー側で別のルート (api.domain.xyz/blabla/google/login) からクライアントにログインすると、設定された Cookie ヘッダーが応答ヘッダーとして送信されたにもかかわらず、cartalyst_sentinel Cookie の値が null になります。 Set-Cookie ヘッダーが送られてくる(2つあるのが気になるがネイティブログインの場合はこのように動く)
ログイン後に続くリクエストで Cookie が null になる
私は今までこれらの問題について多くのことを読み、n 個の方法を試しましたが、どれも機能していないようです。
少し妥当だと思われることが2つだけありました。
リダイレクト URI の場合は、構成ファイル (Google json または開発者キーなど) を使用して Google API クライアントをインスタンス化することで解決できます。
Cookie が欠落している場合は、クロス ドメイン Cookie が原因であるか、ネストされたルートを介してログインが行われていることが原因である可能性があります (ばかげているように聞こえますが、Google のどこかにあります)。
どんな助けでも感謝します。