提问人:TharakaNirmana 提问时间:10/11/2022 更新时间:10/12/2022 访问量:525
PHP Laravel API 身份验证时的回调
PHP Laravel Callback upon API authentication
问:
我正在尝试在PHP中实现回调方法。我成功调用了 instagram API 来授权用户,但我不知道如何在用户授权后捕获令牌。
以下是我的代码:
public function oAuthBasic()
{
$instagramBasic = new InstagramBasicDisplay([
'appId' => 'xxx',
'appSecret' => 'xxx',
'redirectUri' => 'xxx'
]);
session()->forget('instagramErrorMessage');
$faceBookLoginUrl = $instagramBasic->getLoginUrl();
return response()->json(['redirectUrl' => $faceBookLoginUrl]);
}
这将成功弹出登录。但是,在授权后,如何捕获用户访问令牌?
任何帮助都非常感谢。
答:
0赞
TharakaNirmana
10/12/2022
#1
在@CBore的评论的帮助下,我设法解决了这个问题:
在我的网络.php中创建了一条新路由
Route::get('linkinstagramBasic','InstagramController@linkBasic')->name('instagram.linkBasic');
在 Facebook 应用设置页面上的有效 OAuth 重定向 URI 下包含 URL。
最后写了回调:
/*
* Function that works as the call back after Instagram basic display api authorisation
* Get the code and call access_token API
* AUTHOR : DON
* DATE : 12/10/2022
*/
public function linkBasic(InstagramLinkRequest $instagramRequest) {
if (isset($_GET['code'])) {
// Get the OAuth callback code
$code = $_GET['code'];
$ig_atu = "https://api.instagram.com/oauth/access_token";
$ig_data = [];
$ig_data['client_id'] = Config::get('instagram_basic.app_id');
$ig_data['client_secret'] = Config::get('instagram_basic.app_secret');
$ig_data['grant_type'] = 'authorization_code';
$ig_data['redirect_uri'] = Config::get('instagram_basic.redirect_uri');
$ig_data['code'] = $code;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ig_atu);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($ig_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ig_auth_data = curl_exec($ch);
curl_close($ch);
$ig_auth_data = json_decode($ig_auth_data, true);
dd($ig_auth_data);
//$accessTok = $ig_auth_data['access_token'];
//$UID = $ig_auth_data['user_id'];
//echo "<script>window.close();</script>";
}
}
评论
redirectUri
InstagramBasicDisplay
code