如何解决OAuthException:(#100)

时间:2012-03-25 17:03:22

标签: php facebook facebook-graph-api

我使用我最近开发的fb应用程序在我的墙上发布,它显示以下错误

未捕获OAuthException:(#100)图片网址格式不正确

你也可以直接看到*https://apps.facebook.com/hack-proof_pages/1gp.html

使用两个文件“1gp.html”和“gp1.php”

1gp.html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="gp1.php">
  <p>message
    <textarea style="width:300px; height:50px;" name="message1"></textarea>
</p>
  <p>link 
    <input type="text" style="width:300px;" name="link1" />
  </p>
  <p>
    Picture 
    <input type="text"  name="picture1" />
</p>
  <p>
    name 
    <input type="text" style="width:300px;" name="name1" />
</p>
  <p>
    Caption
    <input type="text" style="width:300px;" name="caption1" />
</p>
  <p>Description
    <textarea style="width:300px; height:50px;" name="description1"></textarea>
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit" />
  </p>
</form>
</body>
</html>

gp1.php代码

<?php 

require_once 'library/facebook.php';

// Create our Application instance.
$facebook = new Facebook(array(
  'appId' => '149865361795547',
  'secret' => 'shhhh seceret :)',
  'cookie' => true,
)); 

     $app_id = '149865361795547';

     $canvas_page = "https://apps.facebook.com/hack-proof_pages/gp1.php";


     //get data for post

     $message1 = $_POST['message1'];
     $picture1 = $_POST['picture1'];
     $name1 = $_POST['name1'];
     $link1  = $_POST['link1'];
     $caption1 =  $_POST['caption1'];
     $description1  = $_POST['description1'];

     // compile the post for for user
    $WallPost = array(
        'message' => $message1,
'link' => $link1,
'picture' => $picture1,
'name' => $name1,
'caption' => $caption1);  // you can also use 'picture', 'link', 'name', 'caption', 'description', 'source'.... 
    //http://developers.facebook.com/docs/reference/api/


         $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page) . ("&scope=email,read_stream,publish_stream,offline_access,publish_actions,manage_pages,user_groups&response_type=token");

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {

     //getting the userid and some other data for verification 

     //get the user id 
            $UserId = $data["user_id"];
            echo 'UserId;' . $UserId;

    //get the user access token
            $atoken = $facebook->getAccessToken();
            echo "</br>" . 'User Access_Token:' . $atoken;

    //set default access token and profile
            //$facebook->setAccessToken($atoken);
            //$user_profile = $facebook->api('/me');

     //get the user name and email
            $user_id = $facebook->getUser();
            $user_profile = $facebook->api('/me','GET');
            $user_name = $user_profile['name'];
            echo "Name: " . $user_name;
            $user_email = $user_profile['email'];
            echo "email: " . $user_email;

    // post to user wall
            $response = $facebook->api('/me' . '/feed','POST',$WallPost);


    //posting to groups wall with sleeping time support poster.xls


} 
?>

* 注意:我的应用使用自签名证书SSL,因此如果您要测试上述网址,您需要允许我的网站并存储其证书以及有时谷歌浏览器显示错误的其他信息由于谷歌Chrome一个弱点,铬需要在Internet Explorer中存储自签名证书意味着如果你想在chrome中检查这个,你需要首先在Internet Explorer中打开这个站点并允许我的站点自签名证书并永久存储,以便它也适用于chrome

1 个答案:

答案 0 :(得分:0)

请检查你的图片网址,你需要提供照片的完整网址而不是相对网址和Facebook应该能够访问图片网址,即它不应该是你本地托管的应用程序,尝试放置一个完全合格的你的代码中的任何图片的样本网址和检查。