简体   繁体   中英

Can't connect to facebook using Android SDK 3

I'm trying to connect to Facebook using Android SDK 3.0 and I'm getting the authorization error such as this. Searches yielded that this is probably a problem with the generated hash which was indeed a problem I then used this solution and got a different hash which I now have in the Facebook app. Still the error persists.

I get this exception before the Facebook authorization dialog appears:

11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043): Exception during service
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043): com.facebook.http.protocol.ApiException: invalid app id
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponse.h(ApiResponse.java:239)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:272)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:29)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:59)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:29)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:363)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:179)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.java:139)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:237)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:378)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:156)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:16)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:366)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:259)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:299)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:53)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:230)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Handler.handleCallback(Handler.java:725)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Looper.loop(Looper.java:137)
11-17 13:11:50.698: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.HandlerThread.run(HandlerThread.java:60)

I get this after accepting the permissions:

11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043): Exception during service
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043): com.facebook.http.protocol.ApiException: invalid app id
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponse.h(ApiResponse.java:239)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:272)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:29)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:59)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:29)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:363)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:179)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.java:139)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:237)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:378)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:156)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:16)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:366)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:259)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:299)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:53)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:230)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Handler.handleCallback(Handler.java:725)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.Looper.loop(Looper.java:137)
11-17 13:11:55.112: W/fb4a(:<default>):BlueServiceQueue(10043):     at android.os.HandlerThread.run(HandlerThread.java:60)
11-17 13:11:55.456: D/dalvikvm(389): GC_EXPLICIT freed 2605K, 41% free 33304K/56164K, paused 146ms+12ms, total 497ms
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043): Failed to send
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:637)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:45)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.java:602)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at android.os.Handler.handleCallback(Handler.java:725)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at android.os.Looper.loop(Looper.java:137)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at android.app.ActivityThread.main(ActivityThread.java:5039)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at java.lang.reflect.Method.invokeNative(Native Method)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at java.lang.reflect.Method.invoke(Method.java:511)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-17 13:11:55.464: W/fb4a(:<default>):GDPDialog(10043):    at dalvik.system.NativeStart.main(Native Method)

However, login doesn't work.

I've logged in manually since I can't use the existing API's due to some architectural constraints. These are the changes to the manifset:

    <activity android:name="FBDemoStub"
              android:theme="@style/CustomTheme"
              android:configChanges="orientation|keyboardHidden"
              android:launchMode="singleTop"
              android:label="FacebookDemo">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
    </activity>
    <activity android:name="com.facebook.LoginActivity"/>

Strings XML contains the app_id which is the number from the Facebook developer console where the app is with a green circle (public and not sandboxed).

The actual code for the facebook login is this (notice that the package name is correct in code):

public void login() {
    activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Session s = Session.getActiveSession();
            if(s == null) {
                Log.p("Creating new session");
                s = new Session.Builder(activity).setApplicationId("com.myapp.package.name").build();
                Session.setActiveSession(s);
            }
            if(s.isOpened()) {
                Log.p("Login session already open");
                return;
            }
            activity.setIntentResultListener(new IntentResultListener() {
                public void onActivityResult(int requestCode, int resultCode, Intent data) {
                    Session s = Session.getActiveSession();
                    if(s != null) {
                        s.onActivityResult(activity, requestCode, resultCode, data);
                    }
                }
            });
            Session.OpenRequest openRequest = new Session.OpenRequest(cn);
            openRequest.setDefaultAudience(defaultAudience);
            openRequest.setPermissions(permissions);
            openRequest.setLoginBehavior(loginBehavior);
            openRequest.setCallback(new Session.StatusCallback() {

                @Override
                public void call(Session session, SessionState state, Exception exception) {
                    if(exception != null) {
                        // ... do stuff
                        return;
                    }
                    if(state == SessionState.OPENED) {
                        FaceBookAccess.setToken(session.getAccessToken());
                    }
                }
            });

            if (publish) {
                s.openForPublish(openRequest);
            } else {
                s.openForRead(openRequest);
            }
        }
    });
}

try to change this line

s = new Session.Builder(activity).setApplicationId("com.myapp.package.name").build();

with

s = new Session.Builder(activity).setApplicationId(getString(R.string.app_id)).build();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM