Facebook用户在自己的网站上使用应用程序时的权限 - 集成在PHP而不是Url中

时间:2012-06-13 12:49:26

标签: php facebook facebook-graph-api

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

此应用程序基本上允许用户在他的墙上发布默认评论。它使用我的Facebook个人资料帐户工作正常,但当我让我的朋友使用我的网站时,他收到以下错误 - '未捕获OAuthException:(#200)用户未授权该应用程序执行此操作抛出'

我发现问题的唯一解决办法是输入以下网址 - <pre>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</pre>

我不想在我的应用上创建一个链接供用户点击它 - 而是我希望它集成到我网站上的PHP代码中。

以下是我的PHP代码示例

<pre>

/ 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'
      ));
}
</pre>

这是HTML

<pre>
<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!">
</form>

2 个答案:

答案 0 :(得分:0)

我刚刚在Graph Explorer中尝试过此操作,似乎为了从/me获取信息,您需要传递访问令牌(我不记得以前是这样的)。如果/me使用用户的ID,则工作得很好,并返回没有访问令牌的基本信息。您还可以尝试使用当前请求传递访问令牌:

$token = $facebook->getAccessToken();
$user_profile = $facebook->api('/me',array (
'access_token' => $token)
);

答案 1 :(得分:0)

  

'未捕获的OAuthException:(#200)用户未授权应用程序执行“

中抛出的此操作      

直到现在我发现的问题的唯一解决方案是[...]

在此之前,您似乎还没有充分利用应用程序和授权的基础......所以请开始阅读相关文档!

https://developers.facebook.com/docs/authentication/