PHP API接口怎么控制权限?

举个例子:

a.com    //我的网站
b.com    //其他网站
a.com/api/getUserName    //我的网站的API,返回user表的所有username

在没有对接口进行权限控制之前,b.com在其站内请求a.com/api/getUserName也能获得数据。
现在我不想让b.com可以请求这个接口拿到数据,度了一下。了解了两个方法:
1.验证referer,据说这个可以被伪造,所以没用;
2.token,说是请求的时候加几个参数:a.com/api/getUserName?a=1&b=2&token=xxxxxxxxxxxxx,
然后服务器将a和b再加上一个密钥进行加密得到一个字符串与客户端传过来的token进行对比即可。
但是其他人可以在访问a.com的时候拿到这样的请求链接,直接复制a.com/api/getUserName?a=1&b=2&token=xxxxxxxxxxxxx,放在b.com的代码里面向a.com的这个api发请求拿到数据?
还是我对这个方式理解有误? 求大牛指点。

查看回复