Android Probleme bei Facebook Integration

T.U.S.O.

Mitglied
Hi Leute,
ich bin noch ein Anfänger in der Java Programmierung, also tut es mir leid wenn ich manchmal "blöde" Fragen stelle.
Ich bin gerade dabei, mit ein paar Freunden eine App zu programmieren und möchte in dieser Facebook integrieren. Dazu benutze ich folgendes Tutorial: Android Tutorial - Facebook-Entwickler
Nun habe ich allerdings ein paar kleine Probleme:
1. Bei Schritt 5 soll man die App Signatur herausfinden und bei Facebook eintragen. Ich habe auch schon auf anderen Seiten gesucht, aber irgendwie hat nichts funktioniert. Ich arbeite mit Eclipse und wenn ich das richtig verstanden habe, erzeugt dieses automatisch einen Debugging Key, den der Android Emulator benutzen kann. Aber wie bekomme ich jetzt den Key-Hash heraus, um ihn bei Facebook einzutragen.
2. Bei Schritt 6.6 soll man wieder einiges an Code einfügen. Ich habe alles eingefügt, allerdings meldet Eclipse Fehler in der Codezeile
Code:
mPrefs = getPreferences(MODE_PRIVATE);
.
Bei "getPreferences" sagt Eclipse "Return type for the method is missing"
Als Fixes bietet er "set method return type to void" und "change to constructor", wobei beides nicht geholfen hat.
Bei "MODE_PRIVATE" kommt der Fehler "MODE_PRIVATE cannot be resolved to a type".
Als Fixes schlägt er hier beispielsweise "create class/interface/enum" und "add type parameter MODE_PRIVATE to 'Name meiner Klasse'" vor.
3. Bei Schritt 7 bekomme ich in der Zeile
Code:
mAsyncRunner.logout(getContext(), new RequestListener() {
ebenfalls den Fehler "Return type for the method is missing".

Ich hoffe Ihr könnt mir helfen und freue mich über jeden Lösungsvorschlag🙂
 
Bei Schritt 1 sagt dir die Doku doch eh was du machen musst. Du musst eine Signatur von deinem Debug-Key erstellen, dass ist dann dein Hash.

Dazu musst du openssl installieren und dann folgendes ausführen:
Code:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Auf Windows kann es sein, dass du den Pfad zum debug.keystore ändern musst.

Für die anderen zwei Fehler fehlt der Kontext. Mit einer Zeile Code gleicht es Wahrsagerei hier zu sagen was nicht stimmt.
 
Hallo schlingel,
erstmal Danke für deine Hilfe. Also ich hab OpenSSL installiert bzw. runtergeladen und in C:\Programme entpackt... Den Code muss ich doch in das Windows Kommando Fenster eingeben oder nicht? Weil wenn ich das tue, kommt die Fehlermeldung das der Befehl "openssl" entweder falsch geschrieben ist oder nicht gefunden werden konnte....
Zu 2. und 3.: Ich dachte die Codezeile in Verbindung mit dem Link zum Tutorial wo ja eigentlich der gesamte Code steht, den man braucht, würde reichen. Hier ist dann nochmal der gessamte Code der Klasse, wobei hier auch mein eigener funktionierender Code der App drinsteht, ergänzt mit dem Facebook-Code
Java:
package pu.app;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.facebook.android.*;
import com.facebook.android.Facebook.*;

public class GymTriStart extends Activity{
	
	Facebook facebook = new Facebook("pu.app");
	String FILENAME = "AndroidSSO_data";
	private SharedPreferences mPrefs;

	Button kalender;
    Button vertretung;
    Button anfahrt;
    Button raumplan;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
     
	     Button kalender = (Button)findViewById(R.id.kalender);
	     Button vertretung = (Button)findViewById(R.id.vertretung);
	     Button anfahrt = (Button)findViewById(R.id.anfahrt);
	     Button raumplan = (Button)findViewById(R.id.raumplan);
	     
		    kalender.setOnClickListener(menu);
		    vertretung.setOnClickListener(menu);
		    anfahrt.setOnClickListener(menu);
		    raumplan.setOnClickListener(menu);
		    
		    facebook.authorize(this, new DialogListener() {
	            @Override
	            public void onComplete(Bundle values) {}

	            @Override
	            public void onFacebookError(FacebookError error) {}

	            @Override
	            public void onError(DialogError e) {}

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

	
		    
	
	
	facebook.authorize(this, new String[] { "email", "publish_checkins" },

		      new DialogListener() {
		           @Override
		           public void onComplete(Bundle values) {}

		           @Override
		           public void onFacebookError(FacebookError error) {}

		           @Override
		           public void onError(DialogError e) {}

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


    

	 mPrefs = getPreferences(MODE_PRIVATE);
	 String access_token = mPrefs.getString("access_token", null);
	 long expires = mPrefs.getLong("access_expires", 0);
	 if(access_token != null) {
	            facebook.setAccessToken(access_token);
	        }
	        if(expires != 0) {
	            facebook.setAccessExpires(expires);
	        }
	        
	        /*
	         * Only call authorize if the access_token has expired.
	         */	
	        if(!facebook.isSessionValid()) {

	            facebook.authorize(this, new String[] {}, new DialogListener() {
	                @Override
	                public void onComplete(Bundle values) {
	                    SharedPreferences.Editor editor = mPrefs.edit();
	                    editor.putString("access_token", facebook.getAccessToken());
	                    editor.putLong("access_expires", facebook.getAccessExpires());
	                    editor.commit();
	                }
	    
	                @Override
	                public void onFacebookError(FacebookError error) {}
	    
	                @Override
	                public void onError(DialogError e) {}
	    
	                @Override
	                public void onCancel() {}
	            });
	        }
	    };

	  
	public OnClickListener menu = new OnClickListener()
    {
    	@Override
    	public void onClick(View v)
    	{
    		Intent intent;
            switch (v.getId())
            {
            case R.id.kalender: intent = new Intent(GymTriStart.this, kalender.class); break;
            case R.id.vertretung: intent = new Intent(GymTriStart.this, vertretung.class); break;
            case R.id.anfahrt: intent = new Intent(GymTriStart.this, anfahrt.class); break;
            case R.id.raumplan: intent = new Intent(GymTriStart.this, raumplan.class); break;
            default: intent = new Intent (GymTriStart.this, GymTriStart.class);
            }
            startActivity(intent);
    	}
    	
    };
    
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        facebook.authorizeCallback(requestCode, resultCode, data);
    }
    mAsyncRunner.logout(getContext(), new RequestListener() {
    	  @Override
    	  public void onComplete(String response, Object state) {}
    	  
    	  @Override
    	  public void onIOException(IOException e, Object state) {}
    	  
    	  @Override
    	  public void onFileNotFoundException(FileNotFoundException e,
    	        Object state) {}
    	  
    	  @Override
    	  public void onMalformedURLException(MalformedURLException e,
    	        Object state) {}
    	  
    	  @Override
    	  public void onFacebookError(FacebookError e, Object state) {}
    });
    
    
    
}

Ich bedanke mich jetzt schon für weitere Hilfe😉
 
Ich habe Openssl jetzt nochmal mit einem Installer installiert, trotzdem kommt bei der Eingabe des Befehls
Code:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
im Windows Kommmando Fenster weiterhin die FehlermeldungDer Befehl "openssl" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Ich habe jetzt auch schon stundenlang im Internet geguckt und tausende Tutorials versucht, um den Keystore auszulesen, aber nichts hat funktioniert🙁
Kann mir den niemand helfen???
 
Danke erstmal für die Hilfe. Leider komme ich bei den Fehlern im Code nicht weiter und kann sie nicht beheben... Hat hier vielleicht noch jemand eine Idee???
 

Zurück
Oben