2011-01-12 5 views
0

Я использую график api из youtube, и я столкнулся с некоторыми проблемами.сообщение на facebook стена всегда показывает страницу входа .. проблема android

Я могу отправить сообщение на стену, он отлично работает. Проблема в том, что каждый раз он показывает страницу входа, и пользователь должен нажать кнопку «ОК», чтобы отправить ее. Я бы хотел отправить его, не показывая эту страницу, это должно быть показано только в первый раз. Я храню токен, используя общие настройки , но если я не вызываю метод 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); 
} 

ответ

0

Уже найти ответ. Просто нужно установить токен в объекте facebook.

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

if(acessToken == null || acessToken.equals("")){ 
    login(); 
}else{ 
    mFacebook.setAccessToken(acessToken); 
    Log.i("teste","Session valid com token salva ? " + mFacebook.isSessionValid()); 
    sendVideo(); 
} 
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); 
    } 
} 
Смежные вопросы