1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Facebook-Login automatisieren (unter Benutzung von Facebook SDK)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von sem_thesis, 07.06.2011.

  1. sem_thesis, 07.06.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    111
    Erhaltene Danke:
    0
    Registriert seit:
    06.03.2011
    Phone:
    Nexus One
    Hallo!

    Stecke an einem letzten wichtigen Problem fest, bevor die App deployt werden kann.

    Ich habe das Facebook SDK in meine App integriert. Das Ziel ist Facebook-Daten periodisch zu sammeln.

    Jetzt hat das FB-Framework 2 Klassen: Facebook.java (für Authorisierung) und AsyncFacebookRunner (Graph API aufrufen).


    Ein Facebook Session sieht dabei so aus:

    Code:
    private Facebook mFacebook = new Facebook(APP_ID);
    private AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);
    
    mFacebook.authorize(CurrentActivity.this, PERMS, new LoginDialogListener());
    
    private class LoginDialogListener implements DialogListener {
     
            @Override
            public void onComplete(Bundle values) {
    
             Log.d(TAG, "Login successful!");
                    
              /* Now we start data collection */
              updater = new MyFBDataUpdater();
              updater.start();
              Log.d(TAG, "Updater-Thread created");
            
            }
    
    }
    
    public class MyFBDataUpdater extends Thread    {
    
            static final long DELAY = 1000 * 10;                    // 10s intervals between consequent HTTP-Requests
    
            @Override
            public void run() {
    
                while (true) {
    
                    try {
                        Log.d(TAG, "-- New FBData - Updating session has started --");
                                            
                        /* Start Collection - get data step-by-step after 10s intervals */
                        
                        // Get Profile Information
                        mAsyncRunner.request("me", new ProfileRequestListener());
                        // Sleep
                        Thread.currentThread();
                        Thread.sleep(DELAY);
                    }
    
    }
    
    }
    
    
    Dieser Code hier greift auf den Ast /me des Graph API's zu und ruft die Methode ProfileRequestListener welche die Daten verarbeitet.




    Nun, wenn ich den Phone neustarte, komme ich wieder auf den Original-Screen wo mich ich (mit Buttonklick) einloggen muss (neuer Aufruf der .authorize() Methode). Da Facebook Single-Sign-On benutzt und meine credentials im Cache gespeichert werden, muss ich meine Daten nicht mehr explizit eingeben und werde einfach eingeloggt.



    Ok, meine Frage ist nun:

    PS: Die .authorize()-Methode des FB-Frameworks sieht folgendermassen aus:
    Code:
       public void authorize(Activity activity, String[] permissions,
                int activityCode, final DialogListener listener) {
    
            boolean singleSignOnStarted = false;
    
            mAuthDialogListener = listener;
    
            // Prefer single sign-on, where available.
            if (activityCode >= 0) {
                singleSignOnStarted = startSingleSignOn(activity, mAppId,
                        permissions, activityCode);
            }
            // Otherwise fall back to traditional dialog.
            if (!singleSignOnStarted) {
                startDialogAuth(activity, permissions);
            }
        }
    
    Das Framework ist im Attachment beigelegt.
     

    Anhänge:

    Zuletzt bearbeitet: 07.06.2011

Diese Seite empfehlen