0

我在我的网站上使用 PHP 创建了一个 Facebook 应用程序。要在我的网站上使用此应用程序,用户必须使用 Facebook 身份验证登录。

这个应用程序基本上允许用户在他的墙上发布默认评论。使用我的 facebook 个人资料帐户可以正常工作,但是当我让我的朋友使用我的网站时,他收到以下错误 - 'Uncaught OAuthException: (#200) The user has not authorized the application to perform this action throw in'

到目前为止,我发现的问题的唯一解决方案是输入以下 URL -

https://www.facebook.com/login.php?api_key=API_KEY&cancel_url=http://www.magimagi.com&next=http://magimagi.com/login/uploadtopage2.php&fbconnect=1&return_session=1&session_version=3&v=1.0&display=page&req_perms=user_about_me,user_birthday,publish_stream,offline_access

我不想在我的应用程序上创建一个链接供用户单击它 - 相反,我希望它集成到我网站上已经存在的 PHP 代码中。

这是我拥有的示例 PHP 代码

/ Get User ID
$user = $facebook->getUser();

if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(   array(
'scope' => 'publish_stream'
));
}

这是 HTML

<form id="selectFriend" name="selectFriend" method="post">
<label for="Friend">Friend:</label>
<select id="friend" name="friend">
<?php 
foreach($user_friends['data'] as $f){
echo '<option value="'.$f['id'].'">'.$f['name'] .'</option>';
} 
?>
</select>
<label for="URL">URL:</label>
<input id="link" name="link">
<input id="message" name="message">
<input type="submit" name="submit" id="submit" value="Send!">

我阅读了几乎所有的文档等等......但不幸的是我没有管理。

我想知道为什么使用我的个人资料可以工作,而不能在其他人的个人资料上工作。

我还是一个初学者,所以请不要侮辱你!

4

1 回答 1

0

据我所知,您的代码已经过时了-您在调用 Auth Dialog 时使用的参数(特别req_perms是)已于 2011 年 10 月弃用-重定向到 auth 对话框的当前(手动)方法是:

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

PHP SDK 的 getLoginUrl() 方法会将用户发送到那里,当您的代码处理code返回的内容时,它将获得一个access_token可用于代表用户进行调用的

有关完整的服务器端流程,请参阅https://developers.facebook.com/docs/authentication/server-side/

于 2012-06-13T15:37:16.183 回答