我正在通过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>