Post-Meldung auf der facebook wall in android
Bin ich mit diesem code, um eine Nachricht zu senden, die auf der Wand auf mein facebook:
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.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class ShareOnFacebook extends Activity{
private static final String[] PERMISSIONS = new String[] {"publish_stream"};
private static final String TOKEN = "access_token";
private static final String EXPIRES = "expires_in";
private static final String KEY = "facebook-credentials";
private Facebook facebook;
private String messageToPost;
public boolean saveCredentials(Facebook facebook) {
Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
editor.putString(TOKEN, facebook.getAccessToken());
editor.putLong(EXPIRES, facebook.getAccessExpires());
return editor.commit();
}
public boolean restoreCredentials(Facebook facebook) {
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
return facebook.isSessionValid();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
facebook = new Facebook(getResources().getString(R.string.facebook_app_id));
restoreCredentials(facebook);
setContentView(R.layout.facebook_dialog);
String facebookMessage = getIntent().getStringExtra("facebookMessage");
if (facebookMessage == null){
facebookMessage = "Test wall post";
}
messageToPost = facebookMessage;
if (! facebook.isSessionValid()) {
loginAndPostToWall();
finish();
}
else {
postToWall(messageToPost);
}
}
public void loginAndPostToWall(){
facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
}
public void postToWall(String message) {
FacebookPoster fp = new FacebookPoster();
fp.execute(message, null, null);
}
private class FacebookPoster extends AsyncTask {
protected void onPostExecute(String result) {
showToast(result);
finish();
}
@Override
protected Object doInBackground(Object... params) {
Bundle parameters = new Bundle();
parameters.putString("message", "Test");
parameters.putString("description", "topic share");
try {
facebook.request("me");
String response = facebook.request("me/feed", parameters, "POST");
Log.d("Tests", "got response: " + response);
if (response == null || response.equals("")
|| response.equals("false")) {
return "Blank response.";
} else {
return "Message posted to your facebook wall!";
}
} catch (Exception e) {
Log.d("ShareOnFacebook" , e.getMessage());
return "Failed to post to wall!";
}
}
}
class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
saveCredentials(facebook);
if (messageToPost != null){
postToWall(messageToPost);
}
}
public void onCancel() {
showToast("Authentication with Facebook cancelled!");
finish();
}
@Override
public void onFacebookError(FacebookError e) {
showToast("Authentication with Facebook failed!");
finish();
}
@Override
public void onError(DialogError e) {
showToast("Authentication with Facebook failed!");
finish();
}
}
private void showToast(String message){
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
aber etwas ist falsch, denn:
1) ich kann nicht, siehe mein post auf meiner Pinnwand.
2) Wenn ich auf erneut senden post muss ich wieder einloggen.
Wie kann ich das beheben meine Probleme?
- Prüfen Sie zunächst, ob Sie alle aktiven Sitzungen und Benutzer eingeloggt ist, wenn nicht müssen Sie zur Anmeldung Ihren Benutzer, speichern Sie die Sitzung, und nach, dass die post die Nachricht auf Ihrer Wand.
- wie kann ich das tun? Können Sie irgendein Beispiel?
- Bekomme ich sowas in den logs: {Session-Zustand:GEÖFFNET, token:{AccessToken token:ACCESS_TOKEN_REMOVED Berechtigungen:[E-Mail]},}
Du musst angemeldet sein, um einen Kommentar abzugeben.
haben Sie durchgemacht http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/ dieses dort erklärt separate Methode
und eine andere wichtige Sache ist, gehen Sie über Anmeldeinformationen Konzept in der fb-integration für die Anmeldung aus.