PHP Laravel API 身份验证时的回调

PHP Laravel Callback upon API authentication

提问人:TharakaNirmana 提问时间:10/11/2022 更新时间:10/12/2022 访问量:525

问:

我正在尝试在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]);
            
    }

这将成功弹出登录。但是,在授权后,如何捕获用户访问令牌?

enter image description here

任何帮助都非常感谢。

php laravel 重定向 回调 instagram-api

评论

0赞 TharakaNirmana 10/11/2022
@Sumitkumar如何获得回电?我正在努力获得授权后返回的 $_GET['code']。
1赞 M. Eriksson 10/11/2022
当用户单击“允许”时,请求应重定向到实例化对象时设置的 URL。当它重定向到那里时,它应该将 添加为查询参数。你能给我们看一下那个URL的代码吗?redirectUriInstagramBasicDisplaycode
0赞 TharakaNirmana 10/11/2022
@M.Eriksson redirectUri 应该是一个函数吗?例如:InstagramController -> link()。我也在本地开发。
2赞 CBroe 10/11/2022
“redirectUri应该是一个函数吗?”- 不,它应该是一个实际的 URL。但是,请求该 URL 应该触发获取代码并将其交换为令牌的代码。

答:

0赞 TharakaNirmana 10/12/2022 #1

在@CBore的评论的帮助下,我设法解决了这个问题:

在我的网络.php中创建了一条新路由

Route::get('linkinstagramBasic','InstagramController@linkBasic')->name('instagram.linkBasic');

在 Facebook 应用设置页面上的有效 OAuth 重定向 URI 下包含 URL。

enter image description here

最后写了回调:

 /*
     * 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>";
        }
    }