0

我们在手机上将用户重定向到以下 URL 以获得应用程序授权:

https://m.facebook.com/dialog/oauth?client_id=XXXXXX&redirect_uri=http://www.server.com/callback.php&scope=offline_access,user_likes,publish_stream,publish_checkins,user_checkins&display=wap

如果用户在他/她的手机上登录 Facebook,没问题,Facebook 会自动重定向到 oauth 对话页面。

如果用户未登录,Facebook 会要求他们先登录。
在wap站点(诺基亚手机)上,登录后它会毫无问题地重定向到oauth对话框。但是在触摸网站(iPhone)上,它会在 URL 中添加标签,将用户重定向到他/她的 Facebook 主页。

甚至 URL 上的 display=wap 参数也无助于解决这个问题。

关于如何解决这个问题的任何想法?

谢谢

4

2 回答 2

1

实际上,这是一个更清洁的解决方案。(在我上一篇文章的时候,我还没有看到 getLoginUrl 的 API。http: //developers.facebook.com/docs/reference/php/facebook-getLoginUrl

require_once("facebook.php");

$config = array(
    "appId" => APP_ID,
    "secret" => APP_SECRET
);

$facebook = new Facebook($config);

$params = array(
    "scope" => "offline_access,user_likes,publish_stream,publish_checkins,user_checkins",
    "redirect_uri" => "http://www.server.com/callback.php",
    "display" => "touch"
);

$url = $facebook->getLoginUrl($params);

header("Location: $url");
于 2011-09-30T01:01:20.540 回答
0

我遇到了同样的问题并且在隔离它时遇到了麻烦,因为它在桌面上的 Chrome 中工作,但在使用 iPhone 的 Safari 浏览器时却没有。

我围绕redirect_url 参数做了一个urlencode 并将显示设置为触摸。因此,以您上面的链接为例,我会试试这个:

https://m.facebook.com/dialog/oauth?client_id=XXXXXX&redirect_uri=http%3A%2F%2Fwww.server.com%2Fcallback.php&scope=offline_access,user_likes,publish_stream,publish_checkins,user_checkins&display=touch

我真诚地希望这对你有用。它似乎给我带来了好运。

于 2011-09-29T20:41:49.297 回答