打开 Authentication 页面,我们需要获取一个 access_token,这是访问令牌。简单来说,就是可以让你在一定时间内,不需要每次都验证 ID 和 Secret,来获取数据的一个令牌。
为了安全,令牌有有效期,过了有效期令牌就会失效,我们要重新获取领取。这是为什么有些 app 我们太久没打开,要求重新登录的原因。
怎么获得 access_token,根据提示,我们需要访问下面这个地址:
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
注意,不是复制这段 URL 去访问,大写字母是需要我们替换的内容。我们刚才拿到了 Client ID 和 Redirect URIs,所以最终我需要访问的 URL 是:
https://api.instagram.com/oauth/authorize/?client_id=a273c29c3ff64fc1804beb63cb85ca17&redirect_uri=http://localhost&response_type=code
怎么访问?直接复制到浏览器地址栏,回车即可。(你要替换成你自己的资料,我的肯定是失效的。)
这时,我们会打开一个授权页面,问你是否授权测试这个应用,点授权即可,然后页面会重新跳转。
等下,页面挂了?别担心,只是重定向了,留意地址栏,变成了:
http://localhost/?code=7d4bd932226747c1ad022855e6d2f356
code 是 7d4bd932226747c1ad022855e6d2f356。
我们获得了 code 信息,暂时还没拿到 access_token,但就差最后一步了。往下翻,我们需要再有这样一个请求:
curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token
同样地,我们把大写字母都替换一下,换了我们刚才拿到的资料,即变成:
curl -F 'client_id=a273c29c3ff64fc1804beb63cb85ca17' \
-F 'client_secret=b548b985e53749518c4c22f693b6c9fb' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=http://localhost' \
-F 'code=7d4bd932226747c1ad022855e6d2f356' \
https://api.instagram.com/oauth/access_token
注意检查一下,复制粘贴的时候不要多出空格。然后这次我们不是在浏览器输入,Mac 是在「终端 (Term)」这个 app 里面,Windows 是在命令行。
输入后回车,就能得到我们想要的结果了。
{
"access_token":
"631487536.a273c29.573aa95fa1b6403db80fe6ac60191c4f",
"user": {
"id": "631487536",
"username": "ethonlau",
"profile_picture": "https://scontent.cdninstagram.com/vp/8a497f3eebaea72dda8fe47ddee1d3a8/5BBAF55E/t51.2885-19/s150x150/13129637_1738545199758157_1620655362_a.jpg",
"full_name": "\u5218\u82f1\u6ed5"
}
}
这时,我们的 access_token 已经拿到,access_token 是 631487536.a273c29.573aa95fa1b6403db80fe6ac60191c4f,依然是把它记下来。
(code 只能用一次,如果你刚才没把 access_token 记下来,请重来一遍。)
咦?我们还发现了一些熟悉的信息。比如 username
不就是我 Instagram 的名字吗?把 profile_picture
的地址在浏览器访问一下,居然就是我的头像图片了!没错,这是我们刚才用于授权的那个用户的资料。
这就是一次简单的接口请求。接口的地址是 https://api.instagram.com/oauth/access_token,把所需要的资料填对,一并发送,接口就会给我们返回数据了,而这种数据交换格式便是 json。只不过实际上,我们会用更复杂和强大的工具去请求数据而已。
现在有了 access_token,我们可以去请求更多数据了。