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的主要内容,如果未能解决你的问题,请参考以下文章

PHP Captcha 在服务器上不起作用,但在本地工作

嵌入的 YouTube 视频在本地服务器上不起作用

Google OAuth2 - 令牌的交换访问代码 - 不起作用

silverlight 插件在服务器上不起作用

Mysql 登录在我的本地 WAMP 服务器上不起作用(phpMyAdmin)

用于导出的 INTO OUTFILE 查询在本地驱动器上不起作用