FaceBook集成麻烦的问题

时间:2014-05-01 13:12:28

标签: php android facebook facebook-graph-api

我正在使用PHP开发Android游戏,但是当我尝试将分数发布到我的Facebook墙上时,描述会与另一个应用程序合并。

从此应用Daily Tools获取的说明和我的实际游戏是Just Double It

图片如下,logo&描述错误

描述:我的游戏说明+我的应用说明。

自动检测到描述,而不是我写的。

这是我发布到Facebook的代码snippit

var APP_ID="*****************";

window.fbAsyncInit = initFacebook;
function initFacebook()
{
    FB.init({
        appId  : APP_ID,
        status : true, // check login status
        cookie : false, // enable cookies to allow the server to access the session
        xfbml  : true  // parse XFBML
    });

    FB.getLoginStatus(onFacebookLoginStatus);
};

(function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

//the login function
function facebookLogin()
{
    var loginUrl="http://www.facebook.com/dialog/oauth/?"+
    "scope=publish_stream&"+
    "client_id="+APP_ID+"&"+
    "redirect_uri="+document.location.href+"&"+
    "response_type=token";
    window.location=loginUrl;
}

function postToWallUsingFBApi()
{
    var score=atob(document.getElementById("txtscore").value);

    var data=
    {
        caption: "scores "+score,
        message: "I challenge you to beat my score "+score + " in Just Double It! on your    Android Phone !!!",
        picture: "http://www.learning-delight.com/ldapps/Game/main.png",
        link: 'https://play.google.com/store/apps/details?id=com.appslight.justdoubleit',
    }

    FB.api('/me/feed', 'post', data, onPostToWallCompleted);
}

//the return function after posting to wall
function onPostToWallCompleted(response)
{
    (response)
    {
        if (response.error)
        {
            document.getElementById("txtEcho").innerHTML=response.error.message;
        }
        else
        {
            if (response.id){
                window.close();
                t = setTimeout("self.close()",500);
            }
            else if (response.post_id)
                document.getElementById("txtEcho").innerHTML="Posted as post_id responce "+response.post_id;
            else
                document.getElementById("txtEcho").innerHTML="Unknown Error";
        }
    }
}

enter image description here

4 个答案:

答案 0 :(得分:3)

@ DrewT的答案涵盖了问题以及解决问题的一些解决方法。另一种方法是完全控制你发布的内容,不要让facebook刮掉它。如果您查看可以发送到Facebook的post params,您会注意到还有一个description参数。

var data=
{
    caption: "scores "+score,
    description: "I HAVE THE POWER!!",
    message: "I challenge you to beat my score "+score + " in Just Double It! on your    Android Phone !!!",
    picture: "http://www.learning-delight.com/ldapps/Game/main.png",
    link: 'https://play.google.com/store/apps/details?id=com.appslight.justdoubleit',
}

答案 1 :(得分:1)

糟糕! Facebook正在抓错错误的开放图表数据。你从另一个应用程序获取数据,因为它们可能托管在同一台服务器上,Facebook没有为Just Double It找到足够的Open Graph数据,但它 DID 在服务器上找到描述和图片数据(即来自Daily Tools)。如果它是该服务器上唯一的Open Graph数据,我认为即使这两个项目托管在不同的文件夹中也不重要。

看起来你已经完成了创建应用程序并使用oAuth2正确验证它的所有工作,所以这里还有剩下要检查的内容:

假设您已经拥有所需的所有Open Graph数据,并且您已经验证了它的位置:

  • 新的OG数据只会在Facebook墙上发布时生效 AFTER 该页面已被Facebook的服务器删除并缓存。我上次检查时认为这种情况大约每24小时发生一次。
  • 但等等,还有更多!实际上,您可以使用位于此处的Open Graph调试工具强制Facebook抓取您的OG数据:https://developers.facebook.com/tools/debug/

一旦在调试器中处理完毕,您的Just Double It Open Graph数据将立即生效,以便您的应用程序推送未来的墙上发布请求。

最后,以下是您的应用似乎错过的两个Open Graph标记的示例:

    <meta property="og:image" content="../relative_path_to_your_image"/>
    <meta property="og:description" content="Desired description of your app"/>

希望有所帮助,祝你好运!

答案 2 :(得分:0)

您应该确保阅读https://developers.facebook.com/policy,尤其是2.3:“确保用户输入用户消息参数中的所有内容。请勿预先填写。这包括帖子,消息,评论和字幕“。

答案 3 :(得分:-2)

我已经解决了我的问题,使用Facebook sdk为Android初步面临一些问题因此无法使用facebook sdk但现在所有问题都解决了。谢谢你的答案。