Pavenhimself
Pavenhimself

Reputation: 567

facebook oauth url problems

I have the following code, which are working partly

<?php

   require_once 'facebook.php';

   $app_id = 'MY_APP_ID';
   $app_secret = 'MY_APP_SECRET';
   $app_url = 'http://mysite.com/index.php/';
   $scope = 'user_about_me';

   // Init the Facebook SDK
   $facebook = new Facebook(array(
     'appId'  => $app_id,
     'secret' => $app_secret,     
     'cookie' => true
   ));

   // Get the current user
   $user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));

     print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
   } 

    $user_profile = $facebook->api('/me');
    echo "id: " . $user_profile['id'];   

 ?>

I get the correct id printed out on this page, but on several other pages i go into the if(!$user).

But there is an error in the oauth url:

API Error Code: 191 API Error Description: The specified URL is not owned by the application Error Message: Invalid redirect_uri: Given URL is not allowed by the Application configuration.

I have found similar problems here on stackoverflow, but can't seem to fix it :/

Under my settings I have the same url and $app_url

Website with facebook -> site url -> https://www.facebook.com/pages/myappname/373671679372127/

EDIT: I edit my app_url, so it is now the same as my canvas url under app settings: http://mysite.com/index.php/

Now I don't get an error. I just get a blank window :(

EDIT: Importent to clear cookies once a while when testing. Else some very random errors somewhere

Upvotes: 0

Views: 791

Answers (1)

andyrandy
andyrandy

Reputation: 74014

Check if you set the correct URL for "Website with Facebook Login" in the dev settings. This cannot be a page on facebook.com, it has to be a Link to YOUR domain.

Also, i would enclose the last 2 rows of your code in an "else" block. And the JavaScript code is wrong. This would be correct:

print('<script> top.location.href="' . $loginUrl . '";</script>');

(easier to understand with double quotes, you missed a semicolon. even if it´s not always needed, you better use it)

Try this code:

$user = $facebook->getUser();

   // If the user has not installed the app, redirect them to the Auth Dialog
   if (!$user) {
     $loginUrl = $facebook->getLoginUrl(array(
       'scope' => $scope,
       'redirect_uri' => $app_url,
     ));
     print('<script> top.location.href=\'' . $loginUrl . '\';</script>');
   }
   else {
    echo 'User ID: ' . $user;
   }

Also, get rid of the Slash after "index.php". That´s not i folder (i hope/guess).

Upvotes: 1

Related Questions