我正在通过facebook实现登录,并使用sdk 4.1.0获取用户电子邮件id,如facebook documentation所示,但出现的问题是,每次在调用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");
   }
}

每次我得到输出
活动结果
取消
我也没有得到包含按钮取消和登录的facebook登录屏幕。
从移动设备卸载Facebook应用程序后,错误更改为无效的应用程序ID
这是StackTrace
06-04 10:55:16.63119864-19864/com.dexterous.hellogin i/webviewfactory:加载com.google.android.webview版本42.0.2311.138(代码2311138)
06-04 10:55:16.70619864-19864/com.dexterous.hellogin i/libraryloader:加载本机库的时间:4毫秒(时间戳8772-8776)
06-04 10:55:16.706 19864-19864/com.dexterous.hellogin i/libraryloader:“预期的本机库版本号”,实际的本机库版本号”
06-04 10:55:16.7171719864-19864/com.dexterous.hellogin w/art::尝试从IRT中删除本地句柄作用域条目,忽略
06-04 10:55:16.81619864-19864/com.dexterous.hellogin v/webviewchromiumfactoryprovider:将铬绑定到主活套活套(main,tid 1){28a6fbd9}
06-04 10:55:16.81619864-19864/com.dexterous.hellogin i/libraryloader:“预期的本机库版本号”,实际的本机库版本号”
06-04 10:55:16.819 19864-19864/com.dexterous.hellogin i/chromium:[信息:library\loader\u hooks.cc(112)]chromium日志记录已启用:级别=0,默认详细程度=0
06-04 10:55:16.834 19864-19864/com.dexterous.hellogin i/browserstartupcontroller:初始化铬进程,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.hellogin e/sysutils::applicationcontext在applicationstatus中为空
06-04 10:55:16.869 19864-19864/com.dexterous.hellogin w/chromium:[警告:resource\u bundle.cc(286)]locale\u file\u path.empty()
06-04 10:55:16.870 19864-19864/com.dexterous.hellogin i/chromium:[信息:aw_browser_main_parts.cc(63)]APK加载成功,fd=63 off=46992 len=3337
06-04 10:55:16.871 19864-19864/com.dexterous.hellogin i/chromium:[信息:aw_browser_main_parts.cc(76)]loading webviewcromium.pak from,fd:64 off:7953032 len:1161174
06-04 10:55:17.024 19864-19953/com.dexterous.hellologin w/chromium:[警告:数据减少代理配置cc(150)]spdy proxy在启动时关闭
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.hellogin w/bindingManager::无法调用determinedvisibility()-从未看到PID:19864的连接
06-04 10:55:26.140 19864-20020/com.dexterous.hellogin e/adreno-es20:无效的纹理格式!返回错误!
06-04 10:55:26.140 19864-20020/com.dexterous.hellogin e/adreno-es20::帧缓冲区颜色附加不完整。返回gl_framebuffer_incomplete_附件!
06-04 10:55:26.198 19864-19912/com.dexterous.hellologin e/adreno-es20:纹理格式无效!返回错误!
06-04 10:55:26.198 19864-19912/com.dexterous.hellogin E/adreno-es20::帧缓冲区颜色附件不完整。返回gl_framebuffer_incomplete_附件!
06-04 10:58:32.28719864-19864/com.dexterous.hellologin e/tag:oncancel
06-04 10:58:32.28719864-19864/com.dexterous.hellogin e/tag:onActivityResult
06-04 10:59:25.49819864-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>

最佳答案

问题是你直接使用facebook appid,你应该这样使用

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

在STIN XML中
<string name="app_id">1437829111203883 </string>

09-06 13:37