Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook Graph API and Docker

Im working on a website using Laravel in a Docker container on local. The webserver used is Nginx.

Im trying to implement Facebook's Graph API (the PHP API) and as Im developing on localhost and using Docker, any time I want to use the API I get:

Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.

I tried adding the domain I use locally myapp.local:3000, also <my ip>:3000 or localhost:3000 but nothing works.

Here is the code:

public function facebookRequest() {
    $fb = new \Facebook\Facebook([
        'app_id' => 'MY_APP_ID',
        'app_secret' => 'MY_APP_SECRET',
        'default_graph_version' => 'v8.0',
        ]);

    $callback = 'users/get-facebook-photos';
    $helper = $fb->getRedirectLoginHelper();
    $permissions = ['user_photos'];
    $data['fb_url'] = $helper->getLoginUrl($callback, $permissions);
    
    $loginUrl = $helper->getLoginUrl(base_url().'/users/get-facebook-photos', $permissions);

    echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}

What I need to do to develop using Graph API and Docker? There's some option to bypass domain filter or what should I do?

like image 402
David TG Avatar asked Oct 21 '20 14:10

David TG


People also ask

What can I do with Facebook Graph API?

The Graph API is the primary way to get data into and out of the Facebook platform. It's an HTTP-based API that apps can use to programmatically query data, post new stories, manage ads, upload photos, and perform a wide variety of other tasks.

Is Facebook Graph API a REST API?

The Legacy REST API is in the process of being deprecated, while the Graph API is the most current, so if you're unsure of which one to use, your best bet is to go with that one. As you suggested, the Graph API, just like the Legacy REST API, is in fact a RESTful API.

How do I use Facebook Graph API and extract data?

To use the Graph API Explorer tool, go to developers.facebook.com/tools/explorer. Generate the access token you need to extract data from the Facebook Graph API by selecting Get User Access Token from the App Token drop-down menu under the name of your app.


2 Answers

Seems like you're using your application to request a token from facebook servers and when the token is created, you'll end up being redirected on to the original destination. The redirect location cannot be "localhost" it should be a valid location ... like a website. If you want to make this work locally you could edit your /etc/hosts file to map local.example.com to 127.0.0.1 and use this domain for redirections in tests/QA, so that when your app gets redirected, it attempts it via the localhost.

Another suggestion (found by searching for the exact but more generic parts of the error "Can't Load URL: The domain of this URL isn't included in the app's domains") suggests:

add "https://apps.facebook.com/" in valid OAuth redirect URIs under https://developers.facebook.com/apps/your-app-id/fb-login/settings/

like image 70
Rob Evans Avatar answered Oct 21 '22 20:10

Rob Evans


Well finally got a solution (not the one I wanted). I was using a custom domain defined on my host file. That didn't work for Facebook. I needed to use localhost (not even 127.0.0.1) and whitelist localhost on Facebook Developers.

So, if you have this issue, you can do this workaround and use localhost instead of custom domain. Nevertheless, my ideal solution would be using custom domains.

like image 24
David TG Avatar answered Oct 21 '22 20:10

David TG