自从我尝试解决这个问题以来,我已经在这里问过它,但没有得到任何答复,我一直在各种意义上搜索我的问题,但我就是做不到。 我只需要知道当我向 Facebook 发送我的 url 时如何获得有效的 url 我希望 Facebook 将我的用户重定向回来:
site_url(‘main/verification’)
(我正在使用 codeIgniter)
所以我的登录网址如下所示:
https://www.facebook.com/dialog/oauth?client_id=248650435198175.&.redirect_uri=http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification&state=004dc1ebe9e081b2222408434af7dbd5&scope=email
(删除所有%后的所有点)
一旦我点击链接,我就会被定向到 Facebook,但是随后,我会在浏览器中使用该 URL 重定向到我的主页(而不是主页面/验证页面):
http://localhost/SocialCart/index.php?%.2.Fmain%.2.Fverification&state=0e3ae6ca3e7869f618d65ad&code=AQCwwZUevy-SfeNLgUC55Rg0bi7noi_oczwt_2TmR-DobC8xc6STYIW82VLi23fzf9d-J5tdufdOLpc#_=_
好吧,我已经删除了那段长代码的一部分,但是你看我在
index.php?
之后得到了 %.2.F 而不是 /
并且 & 应该是? (我认为)
(去掉每%2和2F之间的点“.”)
请问我该如何解决?为什么我的redirectUrl 仅被浏览器部分解码?它似乎解码直到index.php,然后,它停止用“/”替换所有“%.2F”(在%之后再次没有意义) 我想我需要 url 重写或 urlencode() 函数,但事实是只有一半的 url 得到了很好的解释,其余的则不然。我现在真的不知道该怎么办..
我想我必须检查 getLoginUrl() 函数,它的函数负责检索将用户从 fb 重定向到我的网站的登录 url 部分(如果 url 编码良好,但我已经尝试了所有方法)似乎没有任何作用。
这是该函数(您可以在 php API 图表的任何 base_facebook.php 中找到该函数。):
/**
* Get a Login URL for use with redirects. By default, full page redirect is
* assumed. If you are using the generated URL with a window.open() call in
* JavaScript, you can pass in display=popup as part of the $params.
*
* The parameters:
* - redirect_uri: the url to go to after a successful login
* - scope: comma separated list of requested extended perms
*
* @param array $params Provide custom parameters
* @return string The URL for the login flow
*/
public function getLoginUrl($params=array()) {
$this->establishCSRFTokenState();
$currentUrl = $this->getCurrentUrl();
// if 'scope' is passed as an array, convert to comma separated list
$scopeParams = isset($params['scope']) ? $params['scope'] : null;
if ($scopeParams && is_array($scopeParams)) {
$params['scope'] = implode(',', $scopeParams);
}
return $this->getUrl(
'www',
'dialog/oauth',
array_merge(array(
'client_id' => $this->getAppId(),
'redirect_uri' => site_url(), // possibly overwritten
'state' => $this->state),
$params));
}
谢谢你
不要对base_facebook.php进行任何更改 使用以下代码:
$params = array(
'scope' => 'read_stream, friends_likes',
'redirect_uri' => site_url(‘main/verification’)
);
$loginUrl = $facebook->getLoginUrl($params);
您的登录网址是这样的:
https://www.facebook.com/dialog/oauth?client_id=248650435198175.&.redirect_uri=http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification&state=004dc1ebe9e081b2222408434af7dbd5&scope=email
重定向 uri 是
http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification
redirect_uri 解码后的 url 为:
http://localhost/SocialCart/index.php?/main/verification
redirect_uri 中有一个
%3F