簡體   English   中英

Facebook登錄CallbackManager FacebookCallback每次調用onCancel()

[英]Facebook Login CallbackManager FacebookCallback called onCancel() every time

我正在通過facebook實現登錄並使用SDK 4.1.0獲取用戶電子郵件ID,如facebook文檔中所示,但問題是每次在onActivityResult之后調用registerCallback時,都會調用而不是onSuccess onCancel。

package com.dexterous.hellologin;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;


public class MainActivity2 extends ActionBarActivity {

CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

    setContentView(R.layout.activity_main_activity2);

    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");
    // If using in a fragment
    //   loginButton.setFragment(this);
    // Other app specific specialization
    // Callback registration
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Log.e("TAG", "success");
        }

        @Override
        public void onCancel() {
            // App code
            Log.e("TAG", "onCancel");
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.e("TAG", "error");
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    Log.e("TAG", "onActivityResult");
   }
}

每次我得到輸出

onActivityResult

onCancel

我沒有得到包含按鈕取消和登錄的facebook登錄屏幕。

卸載Facebook應用程序從移動設備錯誤更改為無效的應用程序ID

這是堆棧跟蹤

06-04 10:55:16.631 19864-19864 / com.dexterous.hellologin I / WebViewFactory:正在加載com.google.android.webview版本42.0.2311.138(代碼2311138)06-04 10:55:16.706 19864-19864 / com .dexterous.hellologin I / LibraryLoader:加載本機庫的時間:4毫秒(時間戳8772-8776)06-04 10:55:16.706 19864-19864 / com.dexterous.hellologin I / LibraryLoader:預期的本機庫版本號“” ,實際本機庫版本號“”06-04 10:55:16.717 19864-19864 / com.dexterous.hellologin W / art:嘗試從IRT中刪除本地句柄范圍條目,忽略06-04 10:55:16.816 19864- 19864 / com.dexterous.hellologin V / WebViewChromiumFactoryProvider:將Chromium綁定到主循環器Looper(main,tid 1){28a6fbd9} 06-04 10:55:16.816 19864-19864 / com.dexterous.hellologin I / LibraryLoader:預期的本機庫版本號“”,實際本機庫版本號“”06-04 10:55:16.819 19864-19864 / com.dexterous.hellologin I / chromium:[INFO:library_loader_hooks.cc(112)] Chromium loggin g enabled:level = 0,default verbosity = 0 06-04 10:55:16.834 19864-19864 / com.dexterous.hellologin I / BrowserStartupController:初始化chrome進程,singleProcess = true 06-04 10:55:16.838 19864-19864 /com.dexterous.hellologin W / art:嘗試從IRT中刪除本地句柄作用域條目,忽略06-04 10:55:16.841 19864-19864 / com.dexterous.hellologin E / SysUtils:ApplicationStatus中的ApplicationContext為空10:55:16.869 19864-19864 / com.dexterous.hellologin W / chromium:[警告:resource_bundle.cc(286)] locale_file_path.empty()06-04 10:55:16.870 19864-19864 / com.dexterous.hellologin I / chromium:[INFO:aw_browser_main_parts.cc(63)]從apk成功加載,fd = 63 off = 46992 len = 3337 06-04 10:55:16.871 19864-19864 / com.dexterous.hellologin I / chromium:[ INFO:aw_browser_main_parts.cc(76)]加載webviewchromium.pak,fd:64 off:7953032 len:1161174 06-04 10:55:17.024 19864-19953 / com.dexterous.hellologin W / chromium:[警告:data_reduction_proxy_config。 cc(150)] SPDY 啟動代理OFF 06-04 10:55:17.047 19864-19864 / com.dexterous.hellologin W / art:嘗試從IRT中刪除本地句柄范圍條目,忽略06-04 10:55:17.060 19864-19864 / com。 dexterous.hellologin W / AwContents:onDetachedFromWindow在已經分離時調用。 忽略06-04 10:55:24.893 19864-19864 / com.dexterous.hellologin W / BindingManager:無法調用determinVisibility() - 從未看到pid的連接:19864 06-04 10:55:26.140 19864-20020 / com .dexterous.hellologin E / Adreno-ES20 ::紋理格式無效! 返回錯誤! 06-04 10:55:26.140 19864-20020 / com.dexterous.hellologin E / Adreno-ES20 :: Framebuffer顏色附件不完整。 返回GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT! 06-04 10:55:26.198 19864-19912 / com.dexterous.hellologin E / Adreno-ES20 ::紋理格式無效! 返回錯誤! 06-04 10:55:26.198 19864-19912 / com.dexterous.hellologin E / Adreno-ES20 :: Framebuffer顏色附件不完整。 返回GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT! 06-04 10:58:32.287 19864-19864 / com.dexterous.hellologin E / TAG:onCancel 06-04 10:58:32.287 19864-19864 / com.dexterous.hellologin E / TAG:onActivityResult 06-04 10:59 :25.498 19864-19864 / com.dexterous.hellologin I / art:顯式並發標記掃描GC釋放16056(1325KB)AllocSpace對象,0(0B)LOS對象,39%免費,9MB / 16MB,暫停856us總計79.028ms

表現

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name="com.dexterous.hellologin.MainActivity2"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main_activity2" >
    </activity>

    <meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="1437829111203883" />

</application>

</manifest>

我注意到onCancel()仍然被調用,因為用戶已經登錄。 嘗試在啟動登錄序列之前調用LoginManager.getInstance().logOut()

問題是你直接使用Facebook APPId,你應該使用像這樣

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/app_id" />

在刺痛xml

<string name="app_id">1437829111203883 </string>

試着給facebook這個權限:

LoginManager.getInstance().logInWithReadPermissions(Mainactivity2.this, Arrays.asList("public_profile", "email"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM