mihsathe
mihsathe

Reputation: 9154

facebook problem : application goes to original domain

I am creating a facebook application with PHP and facing two main problems..

  1. When I click allow on the permission, the app takes me to my own domain (where application is stored) instead of loading it in an iFrame.

  2. Sometimes when I click "Don't allow", it still lets me in and shows a PHP error, while sometimes (most of the times), it doesn't let me in.

What could be the problem? Any way I can programatically redirect to the permissions page? Thank you..

if(empty ($this->session))
    {
        try
        {
            $login_url = $this->facebook->getLoginUrl();
            header("Location: ".$login_url);
        }
        catch(Exception $e)
        {
            header("Location: http://www.facebook.com");
        }
    }
    else
    {
        try
        {
            $this->uid = $this->facebook->getUser();
        }
        catch(Exception $e)
        {
            header("Location: http://www.facebook.com");
        }
    }

note the redirects I made were to try to solve the problem. But no exception is thrown.

Upvotes: 1

Views: 254

Answers (2)

mihsathe
mihsathe

Reputation: 9154

I used this simple script to apply redirect if the page is not inside iFrame...

if(parent == window)
                {
                    window.location = "http://apps.facebook.com/appname/";
                }

This might not be a legal solution, but solved the situation for me. Anybody if knows the legal way, please post. Thanks.

Upvotes: 0

misterjinx
misterjinx

Reputation: 2616

When you want to get the login url you can pass different params based on what you need. in your case, to go back to facebook page url you can use the next param.

This is your code modified:

$login_url = $this->facebook->getLoginUrl(
            array(
                'canvas'    => 1,
                'fbconnect' => 0,
                'next' => YOUR_CANVAS_PAGE_URL
            ) 
        );
if(empty ($this->session))
{
    echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
    exit;
}
else
{
    try
    {
        $this->uid = $this->facebook->getUser();
    }
    catch(Exception $e)
    {
        echo "<script type='text/javascript'>top.location.href='$loginUrl';</script>";
        exit;
    }
}

Let me know if it solves your problem :)

Upvotes: 1

Related Questions