此身份验证后会收到此链接。我如何获得access_token?
答案 0 :(得分:1)
将#
替换为?
,然后您可以通过$_GET
数组访问它,例如:
$token = $_GET['access_token']; // will held 1b6e37716abdh
$state = $_GET['state']; // will held state123
// and so on.
注意:如果是从表单发送,则将表单方法更改为POST,所有内容都将在$_POST
数组中可用,并且不会从URL中隐藏。
<form method="POST" ...>
答案 1 :(得分:0)
如果链接不是您的页面,则可以使用正则表达式(并且无法使用$ _GET)。
https://regex101.com/r/zfrBSk/1
$re = '/access_token=(.*?)(&|$)/';
$str = 'https://wbsite_link.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000';
preg_match($re, $str, $match);
// Print the token:
Echo $match[1];
答案 2 :(得分:0)
另一种选择可能是使用explode并使用多个分隔符(#,&amp;,=):
$subject = "https://WBSITE_LINK.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000";
$a = explode("#", $subject);
if (isset($a[1])) {
$b = explode("&", $a[1]);
if (isset($b[0])) {
$c = explode("=", $b[0]);
if (isset($c[1])) {
echo $c[1];
}
}
}
另一种正则表达式可能是使用\K:
$pattern = '/access_token=\K[^&\s]+/';
$subject = "https://WBSITE_LINK.com/#access_token=1b6e37716abdh&state=state123&scope=profile%20booking&token_type=bearer&expires_in=15552000";
preg_match($pattern, $subject, $matches);
echo $matches[0];