Google OAuth2 在本地开发服务器上不起作用 - PHP Codeigniter spark
Posted
技术标签:
【中文标题】Google OAuth2 在本地开发服务器上不起作用 - PHP Codeigniter spark【英文标题】:Google OAuth2 not working on local development server - PHP Codeigniter spark 【发布时间】:2013-09-01 04:28:51 【问题描述】:我正在尝试使用 Codeigniter 火花 (http://getsparks.org/packages/oauth2/versions/HEAD/show) 允许用户使用 fb 和 google 登录到我的 php 站点。
我的本地开发站点(在 wampserver 上)称为 mysite.dev,为此我有一个 etc/hosts 文件,例如:
127.0.0.1 mysite.dev
Facebook 登录工作正常。但是当我尝试使用谷歌登录时,谷歌抱怨: redirect_uri 的参数值无效:不允许非公共域:http://mysite.dev/index.php/oauth2/session/google 其中 oauth2 是我的控制器,会话是我指定 fb/google 等的函数
任何线索/提示?
【问题讨论】:
这里也有类似的问题,任何好的解决方法,因为我不能使用本地主机,而是需要一个自定义域名,例如:project.company。我宁愿不要将所有开发人员的主机名更改为 project.company.com Oauth - how to test with local urls?的可能重复 【参考方案1】:当您在 Google API 控制台中为 Web 应用程序创建客户端 ID 时,您可以添加允许的 Redirect URIs
。它也接受localhost
urls 和其他。
【讨论】:
Google 接受 localhost,但不接受像 example.somecustomtopleveldomain 这样的自定义域,这有点可惜,因为如果您有多个 Web 项目,您通常会分配自定义域名,例如 project1.something 不起作用。 【参考方案2】:Google API 控制台不允许“mysite.dev”。
【讨论】:
【参考方案3】:我通过为域添加主机文件记录来解决这个问题,其中 dev 部分位于前面而不是末尾(我通常也这样做):
/etc/hosts
127.0.0.1 localhost.mydomain.com
/etc/apache 虚拟主机
ServerName mydomain.com.localhost
ServerAlias localhost.mydomain.com
然后告诉谷歌使用:
http://localhost.mydomain.com/index.php/oauth2/session/google
【讨论】:
【参考方案4】:添加
127.0.0.1 localhost.mydomain.com
到我的hosts
文件和
http://localhost.mydomain.com/oauth2callback
“授权重定向 URI”对我有用
【讨论】:
这对我有用。在 Laravel 中,您还需要像- map: localhost.mydomain.com to: /home/vagrant/your-path-here/mydomain/public
一样将其添加到 Homestead.yaml 文件中,然后配置【参考方案5】:
如果您只想在您的开发网站上运行 OAuth 流程一次,有一个快速的解决方法。
登录到您的 Google Cloud Console,访问 API 和服务 ▸ 凭据 ▸ OAuth 2.0 客户端 ID ▸ 授权重定向 URI 和具有以下值的新 URI:
http://localhost/index.php/oauth2/session/google
然后使用 localhost 而不是 mysite.dev 作为域导航到您的开发站点。在 localhost 上完成 OAuth 过程。 Google 现在应该接受您的返回 URI。成功授权后,您可以返回使用 mysite.dev。
【讨论】:
以上是关于Google OAuth2 在本地开发服务器上不起作用 - PHP Codeigniter spark的主要内容,如果未能解决你的问题,请参考以下文章
Google OAuth2 - 令牌的交换访问代码 - 不起作用