有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

facebook墙上的java帖子总是显示登录页面。。问题机器人

我正在使用youtube上的graph api,我遇到了一些麻烦

我可以把味精发到墙上,效果很好。问题是,每次都会显示登录页面,用户必须单击ok按钮才能发送。我想在不显示页面的情况下发送,它应该只在第一次显示。我使用 共享偏好,但如果我不把这种方法称为facebook。autorize显示登录页面,在尝试发送视频之前,它不起作用

我做错了吗?谢谢你的帮助

我的代码:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.facebook_lay);

    init();

    acessToken = loadAccessToken();
    Log.i("teste","Acesstoken depois do load : " + acessToken);

    if(acessToken == null || acessToken.equals("")){
        login();
    }else{
        Log.i("teste","Session valid com token salva ? " + mFacebook.isSessionValid());
        sendVideo();
    }


}

private void init(){
    mFacebook = new Facebook(APP_ID);
    videoUrl = getIntent().getExtras().getString("videoUrl");
    preferences = this.getSharedPreferences(APPLICATION_PREFERENCES,
            Context.MODE_PRIVATE);
}

private void login(){
    mFacebook.authorize(this, new String[] {"publish_stream","offline_access"},new AuthorizeListener());

}

public void postOnWall(String msg) {
  Log.i("teste", "Testing graph API wall post");
   try {
          Bundle parameters = new Bundle();
          parameters.putString("message", AUTO_MSG);
          parameters.putString("link", msg);
          mFacebook.request("me/feed", parameters, 
          "POST");

   } catch(Exception e) {
       e.printStackTrace();
   }
}

private void storeToken(String token){
    Log.i("teste","storeToken: " + token);
    Editor editor = preferences.edit();
    editor.putString(ACESS_TOKEN, token);
    editor.commit();
}

private String loadAccessToken() {
    String token = preferences.getString(ACESS_TOKEN, null);
    if (token != null && !token.equals("")  ) {
        return token;
    } else {
        return null;
    }
}

private void sendVideo(){
    dialog = ProgressDialog.show(FacebookView.this, "Sending","Enviando video ...");
    new Thread(){
        public void run() {
            postOnWall(videoUrl);
            dialog.dismiss();
            finish();
        };
    }.start();
}

class AuthorizeListener implements DialogListener{

    @Override
    public void onCancel() {
        Log.i("teste","Logou candelado!");
        finish();
    }

    @Override
    public void onComplete(Bundle values) {
        Log.i("teste","Logou com sucesso!");
        Log.i("teste", "AcessToken : " + mFacebook.getAccessToken());
        Log.i("teste", "AcessToken expires : " + mFacebook.getAccessExpires());
        Log.i("teste", "Session valid : " + mFacebook.isSessionValid());

        storeToken(mFacebook.getAccessToken());
        sendVideo();
    }

    @Override
    public void onError(DialogError e) {
        Log.i("teste","Erro ao logar: " + e.getMessage());
        finish();
    }

    @Override
    public void onFacebookError(FacebookError e) {
        Log.i("teste","FacebookError ao logar: " + e.getMessage());
        Log.i("teste","FacebookError ao logar Causa: " + e.getCause());
        e.printStackTrace();            
        finish();
    }

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    mFacebook.authorizeCallback(requestCode, resultCode, data);
}

共 (2) 个答案

  1. # 1 楼答案

    package com.greatup;
    
    import com.facebook.android.DialogError;
    import com.facebook.android.Facebook;
    import com.facebook.android.Facebook.DialogListener;
    import com.facebook.android.FacebookError;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    
    public class MyGreatActivity extends Activity {
        /** Called when the activity is first created. */
    
        Facebook facebook = new Facebook("208086425868080");
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
    //        facebook.authorize(this, new String[] { "email", "read_stream" },new DialogListener() {
    //            
    //          public void onComplete(Bundle values) {}
    //
    //            
    //            public void onFacebookError(FacebookError error) {}
    //
    //            
    //            public void onError(DialogError e) {}
    //
    //            public void onCancel() {}
    //        });
    
            facebook.dialog(this,"feed",
    
                      new DialogListener() {
                           @Override
                           public void onComplete(Bundle values) {}
    
                           @Override
                           public void onFacebookError(FacebookError error) {}
    
                           @Override
                           public void onError(DialogError e) {}
    
                           @Override
                           public void onCancel() {}
                      }
                );
    
    
    
    
        }
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            facebook.authorizeCallback(requestCode, resultCode, data);
        }
    }
    
  2. # 2 楼答案

    已经找到了答案。只需在facebook对象上设置令牌

    acessToken=loadAccessToken(); 日志i(“teste”,“Acesstoken deposis do load:”+Acesstoken)

    if(acessToken == null || acessToken.equals("")){
        login();
    }else{
       mFacebook.setAccessToken(acessToken); 
       Log.i("teste","Session valid com token salva ? " + mFacebook.isSessionValid());
       sendVideo();
    }