2013-06-03 45 views
0

我正在做一个OpenID /的oauth2登录的#。我用这个登录的东西非常接近结束游戏,我闻到胜利即将到来。在我的谷歌的oauth2授权请求回调URL

我想我挤两个问题合而为一。

我做的授权请求是这样的:

if (!isset($_REQUEST['code'])) 
    { 
     $login_path = "https://accounts.google.com/o/oauth2/auth?"; 
     $login_path .= "redirect_uri=" . $redirect_uri; 
     $login_path .= "&response_type=token"; 
     $login_path .= "&client_id=" . $client_id; 
     $login_path .= "&approval_prompt=force"; 
     $login_path .= "&scope=" . $scope; 
     $login_path .= "&access_type=online"; 
     $login_path .= "&state=".base64_encode(strtr("cid=fffffff1", '-_,', '+/=')); 

     echo "<a href='" . $login_path . "'>login</a>"; 
    } 

注意最后附属物login_path串,在那里我送一些base64encoded状态参数。

当用户授权Google授予我的应用程序权限以查看其身份后,它将用户传输到我的回调网址,并且它似乎将url变量附加到回调网址。这些变量包括我的状态参数,我很高兴。

什么我不开心的是与一个界定查询字符串的开头是,而是使用#标签,“#”,因此字符串看起来像这样“?”:

http://www.talqo.com/oauth2callback.php#state=Y2lkPWZmZmZmZmYx&access_token=ya29.AHES6ZQ4LB22t7z0Wc8-5uACj_suJ8WnQJxKq9ICdvYT&token_type=Bearer&expires_in=3600 

(我改变了一些字符在上面的access_token,万一有某种安全问题的?)

所以,你看紧随oauth2callback.php是一个“#”。我无法分析GET变量。

而在问题2) weaseling如果你能回答这个问题,我有一个后续问题,这是我没有收到我的最终授权请求的ID,而是越来越

{ "error" : "invalid_request" } 

但是,我正在获取其他access_token,id_token,token_type和expires_in。

回答

0

哎呀!在初始登录页面,我改变了:

$login_path .= "&response_type=token"; 

到:

$login_path .= "&response_type=code"; 

...现在我的回调地址正确读取:

http://www.talqo.com/oauth2callback.php?state=Y2lkPWZmZmZmZmYx&code=4/QX4ZWs1ZDvManJ1x74pIGCOB0BQL.guKNfSajhLQfshQV0ieZDAow_X8UfgI 

尽管如此,我继续得到

{ "error" : "invalid_request" } 

而不是所希望的“ ID”。