Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Android更新Facebook_Java_Android_Facebook - Fatal编程技术网

Java 从Android更新Facebook

Java 从Android更新Facebook,java,android,facebook,Java,Android,Facebook,我有下面的脚本运行,它的作品完美。我想知道的是。为什么facebook会给我一个秘密密钥,如果我不必实现它,因为我在下面没有 Facebook facebook = new Facebook("APP_ID"); // Application ID of your app at facebook boolean isLoggedIn = false; @Override public void onCreate(Bundle savedInstanceState

我有下面的脚本运行,它的作品完美。我想知道的是。为什么facebook会给我一个秘密密钥,如果我不必实现它,因为我在下面没有

    Facebook facebook = new Facebook("APP_ID"); // Application ID of your app at facebook
    boolean isLoggedIn = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        //Implementing SSO
        facebook.authorize(this, new String[]{"publish_stream"}, new DialogListener(){

            @Override
            public void onComplete(Bundle values) {
                //control comes here if the login was successful
//              Facebook.TOKEN is the key by which the value of access token is stored in the Bundle called 'values'
                Log.d("COMPLETE","AUTH COMPLETE. VALUES: "+values.size());
                Log.d("AUTH TOKEN","== "+values.getString(Facebook.TOKEN));
                updateStatus(values.getString(Facebook.TOKEN));
            }

            @Override
            public void onFacebookError(FacebookError e) {
                Log.d("FACEBOOK ERROR","FB ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
            }

            @Override
            public void onError(DialogError e) {
                Log.e("ERROR","AUTH ERROR. MSG: "+e.getMessage()+", CAUSE: "+e.getCause());
            }

            @Override
            public void onCancel() {
                Log.d("CANCELLED","AUTH CANCELLED");
            }
        });
    }

    //updating Status
    public void updateStatus(String accessToken){
        try {
            Bundle bundle = new Bundle();
            bundle.putString("message", "test update"); //'message' tells facebook that you're updating your status
            bundle.putString(Facebook.TOKEN,accessToken);
            //tells facebook that you're performing this action on the authenticated users wall, thus 
//          it becomes an update. POST tells that the method being used is POST
            String response = facebook.request("me/feed",bundle,"POST");
            Log.d("UPDATE RESPONSE",""+response);
        } catch (MalformedURLException e) {
            Log.e("MALFORMED URL",""+e.getMessage());
        } catch (IOException e) {
            Log.e("IOEX",""+e.getMessage());
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Log.d("onActivityResult","onActivityResult");
        facebook.authorizeCallback(requestCode, resultCode, data);
    }

最可能的原因是您已经登录了此应用程序,或者之前使用Facebook应用程序登录,因此Facebook为您分配了一个访问令牌-该令牌在应用程序明确注销之前有效,或者用户禁用了应用程序访问(在Facebook服务器端用户配置文件中)

因此,当您进行授权时,底层Facebook SDK只检索访问令牌,您不需要登录


您可以通过为您的用户转到Facebook并进行帐户设置(右上角下拉),然后是应用程序(左上角)并禁用应用程序的访问来禁用访问令牌。此时,当您下次运行应用程序时,用户必须登录到Facebook并授权您的应用程序。

最可能的原因是您已登录此应用程序,或之前使用Facebook应用程序登录,因此,Facebook为您分配了一个访问令牌,该令牌在应用程序明确注销或用户禁用应用程序访问(在Facebook服务器端用户配置文件中)之前有效

因此,当您进行授权时,底层Facebook SDK只检索访问令牌,您不需要登录


您可以通过为您的用户转到Facebook并进行帐户设置(右上角下拉),然后是应用程序(左上角)并禁用应用程序的访问来禁用访问令牌。此时,当您下次运行应用程序时,用户必须登录Facebook并授权您的应用程序。

感谢您的深入回答。我确信我没有通过模拟器登录fb,这让我很困惑。那么什么时候需要散列和密钥呢?当用户首次登录时(或者需要重新登录时),应该需要应用程序ID。如果您没有提供它,或者没有提供“APP_ID”字符串,那么登录应该失败。当我手工构建基本的Facebook登录对话框URL()时,它确实如此。API密钥(正在调用哈希?)仅用于应用程序启动的注销-这是无法通过SDK完成的。并且访问令牌(您称之为密钥?)在登录后发送回应用程序,由SDK从webview Cookie中检索,并由SDK用于所有需要它的后续请求(如图形请求)。感谢您的回复。因此,除了APP_ID之外,我不需要处理任何事情,因为我只需要登录并更新状态,这是完全可以的。谢谢您的深入回答。我确信我没有通过模拟器登录fb,这让我很困惑。那么什么时候需要散列和密钥呢?当用户首次登录时(或者需要重新登录时),应该需要应用程序ID。如果您没有提供它,或者没有提供“APP_ID”字符串,那么登录应该失败。当我手工构建基本的Facebook登录对话框URL()时,它确实如此。API密钥(正在调用哈希?)仅用于应用程序启动的注销-这是无法通过SDK完成的。并且访问令牌(您称之为密钥?)在登录后发送回应用程序,由SDK从webview Cookie中检索,并由SDK用于所有需要它的后续请求(如图形请求)。感谢您的回复。因此,我不必处理除APP_ID之外的任何事情,因为我只需要登录并更新状态,这是完全正常的吗?