【问题标题】:Retreive access_token from url string [duplicate]从 url 字符串中检索访问令牌 [重复]
【发布时间】:2013-10-30 13:23:21
【问题描述】:

我正在使用 google api,在 url 中我得到这样的结果:

http://website.com/generate-token/#access_token=ya29.AHES6ZTJwb9lzb0lua81oHa47-8ImcJf-8qE-02kIn8JcgEv&token_type=Bearer&expires_in=3600

我试过了:

$_SERVER['QUERY_STRING']
$url =  "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

但我得到的是http://website.com/generate-token/

如何获取完整的 url 并使用正则表达式来获取 access_token 或任何其他我可以获取它的方式?

【问题讨论】:

  • 那里的 URL 没有查询字符串。这些值是 URL 的 fragment 的一部分。 IE。 # 值。您需要通过&= 获得两次window.location.hashsplit,然后使用JS 找到您要获取值的键。
  • 简短回答:你不能。 (不是没有JS
  • 您是要标记 jQuery 吗?我假设(从上面)您想在服务器上执行此操作。
  • 我只需要这个 url 中的 access_token,它可以通过任何方法,通过 js、jquery 等。@RoryMcCrossan 你能告诉我如何通过 JS 获取它吗?
  • 这取决于你想用它做什么。如果你想在 PHP 中使用该值,那么你不想在 JS 中这样做。

标签: php jquery regex url query-string


【解决方案1】:

我的两分钱(因为你用 jQuery 标记它我想 Javascript 是一个有效的解决方案):

var url = 'http://website.com/generate-token/
           #access_token=ya29.AHES6ZTJwb9lzb0lua81oHa47-8ImcJf-8qE-
           02kIn8JcgEv&token_type=Bearer&expires_in=3600';

function getParameterByName(name, url) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&#]" + name + "=([^&#]*)"),
        results = regex.exec(url);
    return results == null ? "" : 
           decodeURIComponent(results[1].replace(/\+/g, " "));
}

alert(getParameterByName('access_token', url));

http://jsfiddle.net/yejwF/

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2021-09-05
    • 2015-09-08
    • 2020-10-12
    • 2013-06-21
    相关资源
    最近更新 更多