所以我试图在我的应用程序中实现谷歌登录。在客户端,我有一个 android 应用程序和一个 web 应用程序,它们与 PHP 中的 restful API 服务器交互(用于身份验证的 Cartalyst Sentinel 2.0)。
我面临着多个问题。
重定向 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,没有 REDIRECT URI。我在某处读到“postmessage”作为重定向 uri 有效但不适合我。如果没有重定向 URI,客户端会抛出“无效的 json 令牌”错误
对此有什么帮助吗?
- 在来自 Web 客户端的请求中, cartalyst_sentinel cookie 为null。
通过凭据正常登录(api.domain.xyz/login)似乎没有问题。但是,当在服务器端我从不同的路由(api.domain.xyz/blabla/google/login)登录客户端时,即使设置的 cookie 标头作为响应标头发送,cartalyst_sentinel cookie 的值也会变为 null。
正在发送 Set-Cookie 标头(有两个,这让我很担心,但在本机登录的情况下它也可以这样工作)
到目前为止,我已经阅读了很多关于这些问题的内容,并且尝试了 n 种方法,但似乎都没有奏效。
只有两件事看起来有点有效。
重定向URI的情况可以通过使用配置文件(可能是google json或开发者密钥)实例化google api客户端来解决。
缺少 cookie 的情况是由于跨域 cookie 或可能是由于登录是通过嵌套路由完成的(我知道听起来很傻,但在谷歌的某个地方找到了)。
任何帮助表示赞赏。
