这里以人人网为例子,新浪微博的几乎一样。 附_官方指南: 人人网:人人网开放平台官方指南 微博:新浪微博开放平台官方指南
授权验证步骤
首先要申请开放平台的API Key 和 API Secret,指南里有申请步骤
让用户点击以下地址连接(红色记号为自定部分): https://graph.renren.com/oauth/authorize?client_id=API Key&redirect_uri=http://127.0.0.1/test/get.php(转向地址,下一步创建这个文件)&response_type=code
在test目录下创建get.php文件,主要内容:
1) 利用code才能获得access_token:$code = $_GET['code'];
2) 以下是获取Access_Token的连接:
$url = 'https://graph.renren.com/oauth/token?grant_type=authorization_code&client_id=API Key&redirect_uri=http://127.0.0.1/test/get.php(同样是转向地址,自身文件就行)&client_secret=API Secret&code='.$code(3.1中的code);
3) 用PHP的file_get_contents传递POST请求给$url,代码如下:
$options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded' ) );
$content = stream_context_create( $options );
$result = file_get_contents( $url, false, $content );
$result = json_decode( $result );
此时的$result
就含有'access_token', 'refresh_token'等,直接$result['access_token']
可以获取。
Notice:
“Warning: file_get_contents(): Unable to find the wrapper "https" - did you
forget to enable it when you configured PHP?...”
这个错误,需要将php.ini中的"extension=php_openssl.dll"去掉前面的“;”“Warning: file_get_contents(https://graph.renren.com/oauth/token?.....):
failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized”
这个错误,网上有很多种说法,比如开远程访问、user_agent设为firefox浏览器之类的,在我机子上这些设置无论开启与否都无影响,只是注意一点,也是我错的地方,$url中的地址不能有换行;另外就是转向地址本机写localhost识别不了还得写127.0.0.1
在抓取用户数据的时候,需要注意应用如果是没审核的状态一些API只能用于测试用户(这个再应用的界面可以设置),如果抓非测试用户的话会出现“Invalid Access Token”的错误,非常坑爹。。
好了,之后就可以抓数据了~祝大家好运~