首页 > 解决方案 > 如何使用 facebook SDK 在 laravel 中获取 fb 帐户图片库

问题描述

我想列出 facebook 的所有照片。所以,为此我在我的 laravel 应用程序中使用 facebook sdk。当我成功登录但当我点击获取图像的方法时,我遇到了下面给出的错误 在此处输入图像描述

她是我用于登录的 javascript 代码

$.getScript('//connect.facebook.net/en_US/sdk.js', function () {
    // initialize facebook sdk
    FB.init({
                appId: '139779161320778', // replace this with your id
                status: true,
                cookie: true,
                version: 'v2.8'
            });

    // attach login click event handler
    $("#btn-login").click(function () {
        FB.login(processLoginClick, {scope: 'public_profile,email', return_scopes: true});
    });
});

function processLoginClick(response)
{
    var uid = response.authResponse.userID;
    var access_token = response.authResponse.accessToken;
    var permissions = response.authResponse.grantedScopes;
    var data = {
        uid: uid,
        access_token: access_token,
        permissions: permissions,
        _token : {{csrf_token()}}
    };
    postData('{{route("fb.login")}}', data, "post");
}

function postData(url, data, method)
{
    method = method || "post";
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", url);
    for (var key in data) {
        if (data.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", data[key]);
            form.appendChild(hiddenField);
        }
    }
    document.body.appendChild(form);
    form.submit();
}

我的控制器代码用于登录

public function store(Facebook $fb) //method injection
{
    // retrieve form input parameters
    $uid = Request::input('uid');
    $access_token = Request::input('access_token');
    $oAuth2Client = $fb->getOAuth2Client();

    $access_token = $oAuth2Client->getLongLivedAccessToken($access_token)->getValue();

    $fb->setDefaultAccessToken($access_token);
    session()->put('access_token',$access_token);

    $fields = "id,cover,name,first_name,last_name,age_range,link,gender,locale,picture,timezone,updated_time,verified";
    $fb_user = $fb->get('/me?fields=' . $fields)->getGraphUser();
}

当我单击以下获取图像的方法时,我会收到该错误。这是javascript和控制器代码的方法

function getImages()
{
    console.log('getImages');
    $.ajax({
        method : 'POST',
        url : '{{route('get.fb.images')}}',
        data : {
            _token : '{{csrf_token()}}',
        },
        succcess : function (data)
        {
            console.log(data);
        }
    })
}

public function getfbImages(Facebook $fb)
{
    $postData = "";
    $userPosts = $fb->get("/{user-id}/photos/uploaded?fields=picture,created_time,name", session()->get('access_token'));
    $postBody = $userPosts->getDecodedBody();
    $postData = $postBody["data"];

    return $postData;
}

这是我的 .env

FACEBOOK_APP_ID=139779161320778
FACEBOOK_APP_SECRET=************
FACEBOOK_DEFAULT_GRAPH_VERSION=v2.8

我的 config.pphp

return [
    'config' => [
        'app_id' => env('FACEBOOK_APP_ID', null),
        'app_secret' => env('FACEBOOK_APP_SECRET', null),
        'default_graph_version' => env('FACEBOOK_DEFAULT_GRAPH_VERSION', 'v2.8'),
    ],
];

和我的 Appserviceprovider.php

$this->app->singleton(Facebook::class, function ($app) {
    return new Facebook(config('facebook.config'));
});

请帮助某人摆脱这些问题。我会很有帮助的

标签: javascriptphplaravel

解决方案


推荐阅读