首先理解OAuth 2.0的基本流程:它主要包括四个步骤——获取Authorization Code、使用Code换取Access Token、验证并获取用户基本信息以及后续接口调用时携带Token完成身份认证与请求操作。
1. **注册和配置应用程序**:
在开始之前,你需要先到新浪开放平台(https://open.weibo.com/)创建一个新应用以获得App Key及App Secret等必要参数,并设置回调地址(Redirect URI),这将是成功授权后微博服务器返回用户的授权码或访问令牌的位置。
2. **引导用户至授权页面**:
用户点击“使用新浪微博登录”按钮之后,你的PHP程序需要生成包含客户端ID(AppKey) 和重定向URI等内容的跳转链接,将其导向微博提供的 OAuth 授权页让用户同意授权给您的应用:
php
$authorize_url = 'https://api.weibo.com/oauth2/authorize';
$params = [
'client_id' => $app_key,
'redirect_uri' => $callback_url,
'response_type' => 'code',
];
$url_with_params = $authorize_url . '?' . http_build_query($params);
header("Location: " . $url_with_params); // 跳转向授权页面
3. **接收 Authorization Code 并兑换 Access Token**:
当用户允许权限并在新浪端确认授权后,会带着authorization code回传至你在第一步设定好的Callback URL上。此时后台需处理此URL中的查询字符串解析出`code`值,然后发起POST请求向API交换access_token:
php
$post_data = array(
'grant_type' => 'authorization_code',
'client_id' => $app_key,
'client_secret' => $app_secret,
'code' => $_GET['code'],
'redirect_uri' => $callback_url,
);
$response_json = file_get_contents('https://api.weibo.com/oauth2/access_token', false, stream_context_create(array('http'=>
array('method'=>"POST",
'content'=>http_build_query($post_data)
)));
// 解析JSON响应数据得到 access token 及其有效期 expires_in 等信息
$data_array = json_decode($response_json,true);
$access_token = $data_array["access_token"];
4. **获取用户详细资料**:
获取到了AccessToken之后就可以用来对受保护资源如用户个人信息发起请求了。通常这是通过带有token的HTTP头部或者查询参数来传递以便于服务端识别和校验:
php
$user_info_url = 'https://api.weibo.com/2/users/show.json?access_token=' . $access_token;
$json_userinfo_response = file_get_contents($user_info_url);
userinfo_arr = json_decode($json_userinfo_response, true);
// 根据实际业务场景存储所需用户属性比如昵称 nickname 或 UID 到数据库关联当前session或其他标识符
$username = $userinfo_arr['screen_name'];
$uid = $userinfo_arr['id'];
// ... 后续对接口的操作...
至此,你已经在 PHP 应用里实现了基于 OAuth 2.0 的新浪微博一键登录功能。在整个过程完成后,请务必注意妥善保管好从微博处接收到的所有敏感凭证信息,并确保遵循相关隐私政策正确地管理和展示用户的数据内容。同时请关注 API 使用限制及相关更新通知以免影响正常的服务运行。