微博人人开放平台授权

  01 Sep 2014 返回


这里以人人网为例子,新浪微博的几乎一样。 附_官方指南: 人人网:人人网开放平台官方指南 微博:新浪微博开放平台官方指南

授权验证步骤

  1. 首先要申请开放平台的API KeyAPI Secret,指南里有申请步骤

  2. 让用户点击以下地址连接(红色记号为自定部分): https://graph.renren.com/oauth/authorize?client_id=API Key&redirect_uri=http://127.0.0.1/test/get.php(转向地址,下一步创建这个文件)&response_type=code

  3. 在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:

  1. “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"去掉前面的“;”

  2. “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中的地址不能有换行;

  3. 另外就是转向地址本机写localhost识别不了还得写127.0.0.1

  4. 在抓取用户数据的时候,需要注意应用如果是没审核的状态一些API只能用于测试用户(这个再应用的界面可以设置),如果抓非测试用户的话会出现“Invalid Access Token”的错误,非常坑爹。。

好了,之后就可以抓数据了~祝大家好运~