X

Anmelden

Passwort vergessen?

... oder mit Facebook anmelden:

Du hast noch keinen Zugang zu AndroidPIT? Registrieren
Android Forum » Android Developer Forum » Android Entwickler Forum » Problem mit Facebook sdk auf Endgerät

Problem mit Facebook sdk auf Endgerät

Problem mit Facebook sdk auf Endgerät
verfasst am 15.08.2012 11:24:40
Hi,

Ich hab vor kurzem angefangen meine erste richtige App zu programmieren. Gewünscht ist dabei eine Art Newsticker,
der sich aber die News von einem öffentlichen Facebookaccount besorgt. Die App hab ich eigentlich auch so weit fertig.
Ich hab dabei natürlich das Facebook sdk verwendet um mir dann die Statusmeldungen über die Graph API zu besorgen.
Auf dem Emulator funktioniert das so weit auch schon sehr gut also habe ich es mal auf dem Samsung Galaxy Ace meines
Bruders probiert und da scheint aber keine Antwort von Facebook zu kommen. Jetzt frage ich mich woran das liegen kann.
Ich hab die App bereits signiert und meinem Bruder die *.apk geschickt. Den Hashkey hab ich auch schon bei Facebook eingetragen.
Zurzeit hab ich echt keine Ahnung woran das liegen könnte. Da ich kein eigenes Androidphone hab kann ich auch nicht wirklich
debuggen und daher dachte ich mir ich frage einfach mal in nem Forum nach ob da jemand ne Idee hat.

Den Code würde ich nur ungerne veröffentlichen, da ich die App nicht für mich schreibe und mein Kunde sicherlich was dagegen hätte.
Aber zur Not kann ich Codeschnipsel posten.

Ich hoffe mir kann jemand helfen.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Problem mit Facebook sdk auf Endgerät
verfasst am 15.08.2012 15:14:05 — geändert am 15.08.2012 15:15:57
Könnte es sein, dass mir folgender Code nur den Debug-Hash-Key liefert? Denn signiert wird es ja erst, wenn ich es exportiere und dann
stimmt der ja wiederum nicht mit dem überein, den ich bei Facebook hinterlegt hab.

1try {
2 PackageInfo info = getPackageManager().getPackageInfo("mein.paket", PackageManager.GET_SIGNATURES);
3 for (Signature signature : info.signatures) {
4 MessageDigest md = MessageDigest.getInstance("SHA");
5 md.update(signature.toByteArray());
6 Log.i("PXR", Base64.encodeBytes(md.digest()));
7 }
8 }
9 catch (NameNotFoundException e) {}
10 catch (NoSuchAlgorithmException e) {}
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Problem mit Facebook sdk auf Endgerät
verfasst am 15.08.2012 22:54:08
Wie meinst du das? Es kommt keine Antwort von Facebook.

An welcher Stelle? Beim Authentifizieren oder beim API Request?
Was passiert denn? Kommt ein Fehler? Irgendwas geloggt?

Benutzt du Single-Sign-On? Wenn ja, hat das Gerät die Facebook App installiert?

Im Debug-Mode kannst du den Hash benutzen, welchen dir das keytool generiert:
1keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Wenn die App später im Release Mode signiert wird, änderst du den Hash bei Facebook einfach.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Problem mit Facebook sdk auf Endgerät
verfasst am 16.08.2012 11:46:00 — geändert am 16.08.2012 11:50:38
Also ich bin der Meinung, dass beim API Request einfach nichts ankommt, denn es erscheint auch kein Fehler und die üblichen Exceptions hab ich ja abgefangen. Geloggt hab ich zurzeit nichts, da ich es selber noch nicht auf dem Handy testen konnte. Auf dem Emulator läuft ja alles wunderbar.

SSO hab ich bei Facebook aktiviert aber wüsste nicht ob dann auch noch extra Code mit rein muss. Die FB-App ist auf dem Handy installiert. Auf dem Emulator nicht. Könnte es daran liegen?

Also die app wird gestartet und loggt sich bei Facebook ein. Dann erfolgt ein Request. Daraus wird dann der letzte Status genommen und in eine TextView gesetzt. Außerdem wird noch das Profilbild des gewünschten Accounts geladen und in eine ImageView gesetzt. Beides funktioniert aber nicht.
Ich denke mal am Request an sich kann es nicht liegen, da es ja auf dem Emulator wunderbar läuft

1public void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.main);
4 authenticatedFacebook.authorize(MainActivity.this, PERMISSIONS,
5 new TestLoginListener());}

1public class TestLoginListener implements DialogListener {
2
3 public void onComplete(Bundle values) {
4 try {
5 try {
6 setNews();
7 setImage();
8 activateFacebookListener();
9 } catch (JSONException e) {
10 e.printStackTrace();
11 }
12 } catch (MalformedURLException e) {
13 e.printStackTrace();
14
15 } catch (IOException e) {
16 e.printStackTrace();
17 }
18 }
19
20 public void onCancel() {
21 }
22
23 public void onError(DialogError e) {
24 e.printStackTrace();
25 }
26
27 public void onFacebookError(FacebookError e) {
28 e.printStackTrace();
29 }
30 }

1public void setNews() throws MalformedURLException, IOException,
2 JSONException {
3 try{
4 String response = authenticatedFacebook
5 .request("me/feed");
6 final JSONObject json = new JSONObject(response);
7 JSONArray d = json.getJSONArray("data");
8
9 for (int i = 0; i <= 10; i++) {
10 JSONObject event = d.getJSONObject(i);
11 String news = (String) event.get("message");
12 if(i ==0){
13 newsText.setText(news);
14 }else{
15 newsList.add(news);
16 }
17 }
18 }catch( NullPointerException e){
19 newsText.setText("Fehler beim Laden");
20 newsList.add("Fehler beim Laden");
21 }
22 }

1private void setImage() throws MalformedURLException, IOException,
2 JSONException {
3
4 String response = authenticatedFacebook.request("152517248151117");
5 final JSONObject json = new JSONObject(response);
6 JSONArray d = json.getJSONArray("images");
7 JSONObject event = d.getJSONObject(0);
8 String picString = (String) event.get("source");
9
10 URL img_value = null;
11 Bitmap icon = null;
12 try {
13 img_value = new URL(picString);
14 try {
15 icon = BitmapFactory.decodeStream(img_value.openConnection()
16 .getInputStream());
17 } catch (IOException e) {
18 e.printStackTrace();
19 }
20 } catch (MalformedURLException e) {
21 e.printStackTrace();
22 }
23
24 fbImage.setImageBitmap(icon);
25 }

1keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Kennst du zufällig auch ne Variante, die unter Windows läuft? Is mir ja schon fast peinlich zu fragen :D
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Problem mit Facebook sdk auf Endgerät
verfasst am 16.08.2012 12:05:37
Hi,
das keytool kannst du natürlich auch unter Win nutzten ...
Dieses ist ein Teil der Java-SDKs und somit musst du nur <PathToJDK>/bin in dein Pfad legen.
Danach kannst du das keytool auf der Konsole ausführen.

Gruß,
Markus

-----
!!! BAZINGA !!!

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: Problem mit Facebook sdk auf Endgerät
verfasst am 17.08.2012 12:27:01
Also ich hab jetzt noch mal die *.apk installieren lassen, welche mit dem debug key signiert wurde. dann hab ich das Kommando von oben ausgeführt und den Hash-Key bei Facebook angegeben. Leider hat das nichts gebracht
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
Ähnliche Beiträge: s3 facebook anwendung | ebooks auf deutsch