繁体   English   中英

无法使用libgdx框架在Android的Facebook墙上发布游戏得分

[英]unable to post game score on facebook wall in android using libgdx framework

我只是想制作一个需要在Facebook墙上张贴游戏得分的游戏。 我正在遵循libGDX框架。 以下是我的测试活动,仅将我的自定义消息发布在Facebook墙上。

public class MainActivity extends Activity {

    private static final String FB_APP_ID = "1452723631660564";
    private static final String FACEBOOK_PERMISSION = "publish_stream";
    private static final int FB_AUTH = 2; // ANY INTEGER VALUE
    Facebook facebook = new Facebook(FB_APP_ID); //
    static String FACEBOOK_UPDATE_MSG;
    static String FACEBOOK_UPDATE_FAILURE;
    static String FACEBOOK_UPDATE_SUCCESS;
    static String FACEBOOK_SIGNIN_FAILED;
    Handler fHandler = new Handler();       

    Map<Object, Object> preferences = new HashMap<Object, Object>();

    @SuppressLint("NewApi")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        login("Hello facebook test app");
    }

    @SuppressWarnings("deprecation")
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case FB_AUTH:
            facebook.authorizeCallback(requestCode, resultCode, data);
            break;
        default:
            finish();
            break;
        }
    }


    public void postMessageOnWall(final String msg) {


        try {

            if (facebook.isSessionValid()) {

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        Bundle parameters = new Bundle();
                        parameters.putString("message", msg);
                        parameters.putString("link", "ANDROID_MARKET_LINK"); // or any other
                                                                                // link
                        parameters.putString("name", "APP/GAME NAME");
                        try {
                            @SuppressWarnings("deprecation")
                            String response = facebook.request("me/feed", parameters,
                                    "POST");

                            FACEBOOK_UPDATE_MSG = FACEBOOK_UPDATE_SUCCESS;
                            fHandler.post(mUpdateFacebookNotification);
                        } catch (IOException e) {
                            FACEBOOK_UPDATE_MSG = FACEBOOK_UPDATE_FAILURE;
                            fHandler.post(mUpdateFacebookNotification);

                        }
                    }               

                });

            }   



        } catch (Exception e) {

            Log.e("error-----------", e.getLocalizedMessage());

        }

    }



    final Runnable mUpdateFacebookNotification = new Runnable() {
        public void run() {
            Toast.makeText(getBaseContext(), FACEBOOK_UPDATE_MSG,
                    Toast.LENGTH_LONG).show();
        }
    };

    @SuppressWarnings("deprecation")
    public void login(final String msg) {
        /*String access_token = preferences.getString("facebook_access_token",
                null);*/

        String access_token = (String) preferences.get("facebook_access_token");
        long expires = 0;
        if (access_token != null) {
            facebook.setAccessToken(access_token);
        }
        if (expires != 0) {
            facebook.setAccessExpires(10000000l);
        }
        /*
         * Only call authorize if the access_token has expired.
         */
        if (!facebook.isSessionValid()) {
            facebook.authorize(this, new String[] { "publish_stream","read_stream", "offline_access" },
                    FB_AUTH, new DialogListener() {
                        @Override
                        public void onComplete(Bundle values) {
                            /*preferences.putString("access_token",
                                    facebook.getAccessToken());
                            preferences.putLong("access_expires",
                                    facebook.getAccessExpires());
                            preferences.flush();*/

                            preferences.put("access_token", facebook.getAccessToken());
                            preferences.put("access_expires", facebook.getAccessExpires());
                            if (msg != "")
                                postMessageOnWall(msg);
                            else
                                OpenFbPage();
                        }

                        private void OpenFbPage() {



                        }

                        @Override
                        public void onFacebookError(FacebookError error) {
                            FACEBOOK_UPDATE_MSG = FACEBOOK_SIGNIN_FAILED;
                            fHandler.post(mUpdateFacebookNotification);
                        }

                        @Override
                        public void onError(DialogError e) {
                            FACEBOOK_UPDATE_MSG = FACEBOOK_SIGNIN_FAILED;
                            fHandler.post(mUpdateFacebookNotification);
                        }

                        @Override
                        public void onCancel() {
                        }
                    });
        } 

    }

}

我在上面的代码中没有任何异常/错误,但是它也没有在我的Facebook墙上张贴我的自定义消息。 它只是打开一个fb应用程序,并对此加载警报,仅此而已。 当我调试它时,它既没有到达postMessageOnWall()的线程的run()方法,也没有得到在同一方法中定义的任何响应。 请指导我哪里我错了。 我知道我在单个活动中编写了与Facebook发布相关的全部代码,但这只是一个测试应用程序。 一旦成功,我将隔离逻辑。

在此示例中数百种严重错误中,您没有启动线程(通过调用start )。 如果您实际上已经尝试制作一个小型的,独立的示例,那么您将自己发现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM