会话变量或cookie的存在导致PHP中Google Plus API的授权(OAuth)失败


Presence of session variable or cookie causes authorization (OAuth) failure with Google Plus API in PHP

当用户访问我的页面时(类似于Google Plus API PHP starter),我的应用程序需要授权才能访问用户的配置文件。我设置的回调URI是页面本身。最初,一切工作完美:用户返回到我的页面成功授权($authUrl没有设置,而$me和$activities设置)。

然而,现在我需要将一个名为'id'的参数从授权之前传递到之后,这似乎把一切都搞砸了:-(

)

如果在发送授权请求时存在会话变量或cookie,则用户在没有授权的情况下返回我的页面(设置$authUrl,而$me和$activities为NULL)。

更奇怪的是:在使用 之后

setcookie (storedid, $ _GET [' id '],时间()+ 3600,'/',' .mydomain.com ');

用户返回未经授权),而与:

setcookie (storedid, $ _GET [' id '],美元到期,'/anysubfolder/', ' .mydomain.com ');

它工作得很好!此外,在某些地方,我犯了一个错字,$_GET['id']为NULL,即使cookie在'/'路径中,授权也成功了!

是否有一种方法可以将参数从授权前传递到授权后?

我开始考虑一些疯狂的事情(将'id'写入SQL表,以及用户的IP地址,并在授权后使用查询检索它),但它并不健壮,坦率地说,它会很糟糕!

当用户获得OAuth 2规范中描述的授权访问时,您可以向用户发送state参数,该参数将与用户一起返回。

例如https://accounts.google.com/o/oauth2/auth?state=xyz123&scrope=https://www.googleapis.com/auth/plus.me...