【问题标题】:Can you retrieve your Skype status using JSONP?您可以使用 JSONP 检索您的 Skype 状态吗?
【发布时间】:2011-03-16 17:25:39
【问题描述】:

有人知道使用 JSONP 获取 Skype 状态的 URL 吗?

到目前为止,我只找到了一个 XML 状态 URL (http://mystatus.skype.com/username.xml)。

(我正在尝试使用 AJAX 查询 Skype。是的,我可以使用服务器端代理脚本来突破跨域限制,但直接调用会很棒。)

西蒙。

【问题讨论】:

标签: ajax json api skype


【解决方案1】:

显然,您可以通过将扩展名更改为 .txt 来获得仅文本版本的状态:

http://mystatus.skype.com/username.txt

它将返回“在线”或“离线”。关于跨域AJAX,只能通过服务器进行,​​绝对不能直接调用。

【讨论】:

  • 对我来说无论如何它都会返回“离线”。
  • @Evgeny:在 Skype 设置中,在隐私下,您是否允许在网络上显示您的状态?
【解决方案2】:

您可以将标题更改为“JSONP”而不是 JSON。这就是你想要的。

JSONP 通过在 fetches 中携带数据,像这样劫持跨域 fetches 以工作,无需服务器代理。这就像我现在想到的最骇人听闻的有用技术。 :)

我为此向 Skype 唠叨——最简单的方法是让他们的服务器拥有一个官方的、记录在案的 JSONP 接口。我希望他们会这样做。

与此同时,这就是我解决问题的方法:

$enable_native   = true;
$valid_url_regex = '/^http:\/\/mystatus\.skype\.com\/myuserid.*/';

这允许它(通过在服务器上运行的 curl)获取 mystatus.skype.com/myuserid.num(或 .txt)信息。

  • 从带有 URL 的 JS 中获取:
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1

就是这样。呸... :)

【讨论】:

    【解决方案3】:

    您也可以使用 PHP 检索它

    function getSkypeStatus($username) {
        $data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
    
        return strpos($data, '<presence xml:lang="en">Offline</presence>') ? 'Offline' : 'Online';
    }
    

    function getSkypeStatus($username) {
        $data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
        preg_match('@<presence xml:lang="en">(.*?)</presence>@i', $data, $match);
    
        return isset($match[1]) ? $match[1] : 'Error retrieving status';
    } 
    

    干杯!

    感谢来自 - http://www.phpbuilder.com/board/showthread.php?t=10361050 的 Bradgrafelman

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多