错误:invalid_request redirect_uri的参数值无效:Uri必须包含可打印的ASCII字符:

时间:2014-11-27 06:15:54

标签: php codeigniter google-api-php-client

我在Google Developer Console中创建了客户端ID和API密钥,我在谷歌控制台和配置文件中给出了相同的网址

这是我的网址:

https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A81%2Fmoviemuseui%2Fpublic%2Flogin%2FcheckLogin+&client_id=XXXXXXXX-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&access_type=offline&approval_prompt=force

我收到错误

  
      
  1. 这是一个错误。
  2.         

    错误:invalid_request

         

    redirect_uri的参数值无效:Uri必须包含   可打印的ASCII字符:   本地主机:81 / moviemuseui /公共/登录/ checkLogin

如何解决这个问题,我找不到问题。

4 个答案:

答案 0 :(得分:0)

URI语法中不允许使用排除的US-ASCII字符:

   control     = <US-ASCII coded characters 00-1F and 7F hexadecimal>
   space       = <US-ASCII coded character 20 hexadecimal>
   delims      = "<" | ">" | "#" | "%" | <">

在URI语法中也可能允许使用某些字符,但可能会导致问题。

"{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"

以下字符绝对是为查询组件保留的,它们用于协议中的特定含义。

";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","

答案 1 :(得分:0)

您不需要对所有内容进行网址编码。首次调用身份验证只会向用户显示一个页面,供他们批准您的访问权限。这是一个普通的HTTP GET,你可以在任何webbrowser中测试它。

以下作品:

https://accounts.google.com/o/oauth2/auth?client_id= {的clientid} .apps.googleusercontent.com&安培; REDIRECT_URI =瓮:IETF:WG:OAuth的:2.0:OOB&安培;范围= https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email&response_type=code

这个添加你的重定向uri,记住重定向uri应该指向你想要处理身份验证的页面。

https://accounts.google.com/o/oauth2/auth?client_id= {clientid} .apps.googleusercontent.com&amp; redirect_uri = http:// localhost:81 / moviemuseui / public / login / checkLogin / Filename.php&amp; scope = https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/userinfo.email&response_type=code

我有一个教程,解释了如何将调用放在一起:Google 3 legged oauth2 flow

问题:如果您使用的是Google-api-php-client,为什么要手动构建?

您的错误Redirect_URI:必须与您要处理身份验证的网页相匹配。例如:http:// localhost / google-api-php-client-samples / oauth2.php 它应该在开发人员控制台中设置,并在脚本中使用。

答案 2 :(得分:0)

您的重定向uri不能包含空格“”

答案 3 :(得分:-1)

只需检查URI是否不包含任何空格。我也遇到了同样的问题,并通过删除最后的空格来解决。