我是新來的android和我正在建立一個需要登錄的應用程序。到目前爲止,谷歌+和基本的電子郵件登錄已經奏效,但我在登錄Facebook時遇到了麻煩。我使用的大部分代碼都來自Facebook開發者文檔,我試圖以不同的方式使用地址解決問題,但沒有取得任何成功。Android LoginActivity,與圖形API的Facebook CallbackManager請求:executeAndWait()方法不起作用
這是我設置callbackManager和loginButton的onCreate方法。 loginButton註冊回調。如果成功,它會啓動一個圖形請求。但是,executeAndWait()
方法從不起作用。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
mFacebookCallbackManager = CallbackManager.Factory.create();
// Set up facebook login button
LoginButton facebookLoginButton = (LoginButton) findViewById(R.id.facebook_sign_in_button);
facebookLoginButton.setReadPermissions("public_profile", "email");
facebookLoginButton.registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e("callback", "success");
new GraphRequest(AccessToken.getCurrentAccessToken(), "/me", null, HttpMethod.GET, new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
/* handle the result */
try {
getFacebookUserData(response.getJSONObject());
} catch (JSONException e) {
Log.e("graph request", "json exception");
e.printStackTrace();
}
}
}
).executeAndWait(); //<<<<----- problem is here!!! :(
Log.e("graph request", "executed");
uploadUserToServer();
startLaunchActivity();
}
@Override
public void onCancel() { }
@Override
public void onError(FacebookException exception) {
Log.e("callback", "error");
exception.printStackTrace();}
});
}
這是我爲回調管理器的onActivityResult()方法。
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult:" + requestCode + ":" + resultCode + ":" + data);
mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}
有在我的代碼的其他方法,我還沒有顯示,但他們做其他的事情,是不相關的。此代碼也不包括其中的onConnectedMethod()
增加了一層難度的google +登錄。我只想要執行GraphRequest!
這裏是日誌
07-22 11:01:54.784 14078-14078/com.deepomatic.dream E/callback﹕ success
07-22 11:01:54.847 14078-14078/com.deepomatic.dream D/dalvikvm﹕ GC_FOR_ALLOC freed 378K, 4% free 9993K/10408K, paused 46ms, total 48ms
07-22 11:01:54.870 14078-14078/com.deepomatic.dream D/AndroidRuntime﹕ Shutting down VM
07-22 11:01:54.870 14078-14078/com.deepomatic.dream W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x416b7700)
07-22 11:01:54.901 14078-14078/com.deepomatic.dream E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.deepomatic.dream/com.deepomatic.dream.LoginActivity2}: android.os.NetworkOnMainThreadException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3367)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3410)
at android.app.ActivityThread.access$1100(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:708)
at java.io.OutputStream.write(OutputStream.java:82)
at libcore.net.http.HttpEngine.writeRequestHeaders(HttpEngine.java:665)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:814)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
at com.facebook.GraphResponse.fromHttpConnection(GraphResponse.java:253)
at com.facebook.GraphRequest.executeConnectionAndWait(GraphRequest.java:1130)
at com.facebook.GraphRequest.executeBatchAndWait(GraphRequest.java:1032)
at com.facebook.GraphRequest.executeBatchAndWait(GraphRequest.java:999)
at com.facebook.GraphRequest.executeBatchAndWait(GraphRequest.java:983)
at com.facebook.GraphRequest.executeAndWait(GraphRequest.java:958)
at com.facebook.GraphRequest.executeAndWait(GraphRequest.java:854)
at com.deepomatic.dream.LoginActivity2$1.onSuccess(LoginActivity2.java:91)
at com.deepomatic.dream.LoginActivity2$1.onSuccess(LoginActivity2.java:76)
at com.facebook.login.LoginManager.finishLogin(LoginManager.java:508)
at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:192)
at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:140)
at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:82)
at com.deepomatic.dream.LoginActivity2.onActivityResult(LoginActivity2.java:114)
at android.app.Activity.dispatchActivityResult(Activity.java:5322)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3363)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3410)
at android.app.ActivityThread.access$1100(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我有同樣的問題,下面的答案爲我工作,但現在我有一個問題,即任務完成時,我應該知道和應該得到的價值,請幫助我 – neena