我正在使用新的Facebook-sdk并使用 hackbook 示例来获取使用文件的朋友列表FriendsList.java。每次都会Friendlist Activity被杀死,我在 logcat 中收到此错误:
11-18 16:20:51.141: ERROR/JavaBinder(7881): !!! FAILED BINDER TRANSACTION !!!.
Run Code Online (Sandbox Code Playgroud)
该问题每次都会重现。请注意,个人资料中的好友数量为 4500。
11-18 16:19:27.932: DEBUG/Facebook-Util(7881): GET URL: https://api.facebook.com/restserver.php?access_token=**********&query=select+name%2C+current_location%2C+uid%2C+pic_square+from+user+where+uid+in+%28select+uid2+from+friend+where+uid1%3Dme%28%29%29+order+by+name&method=fql.query&format=json
11-18 16:20:50.982: WARN/InputManagerService(3426): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4665a200
11-18 16:20:51.141: ERROR/JavaBinder(7881): !!! FAILED BINDER TRANSACTION !!!
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我目前正在开发一个旨在通过Facebook帐户验证任何用户的应用程序.
我无法从用户的帐户获取用户电子邮件.我的代码如下
private void signInWithFacebook() {
SessionTracker mSessionTracker = new SessionTracker(getBaseContext(), new StatusCallback() {
public void call(Session session, SessionState state, Exception exception) {
}
}, null, false);
String applicationId = Utility.getMetadataApplicationId(getBaseContext());
Session mCurrentSession = mSessionTracker.getSession();
if (mCurrentSession == null || mCurrentSession.getState().isClosed()) {
mSessionTracker.setSession(null);
Session session = new Session.Builder(getBaseContext()).setApplicationId(applicationId).build();
Session.setActiveSession(session);
mCurrentSession = session;
}
if (!mCurrentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(FacebookLoginActivity.this);
if (openRequest != null) {
openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
openRequest.setPermissions(Arrays.asList("user_birthday", "email", "user_location"));
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
mCurrentSession.openForRead(openRequest);
}
}else {
Request.executeMeRequestAsync(mCurrentSession, new …Run Code Online (Sandbox Code Playgroud) 嘿,有人能指出我在Android的Facebook教程的正确方向吗?他们的开发者网站的教程并不是那么好.
这是我到目前为止所提出的:
public static final int FBResultCode = 100;
private static Session.StatusCallback sharedFBStatusCallback = new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
if(exception != null)
Log.e("fb error", exception.toString());
switch(state)
{
case OPENED:
//login successful
break;
case CLOSED:
case CLOSED_LOGIN_FAILED:
closeFBSession();
break;
default:
break;
}
}
};
public static void openFBSessionWithLoginUI(boolean loginUI)
{
Session session = Session.getActiveSession();
if (session != null &&
!session.isOpened() &&
!session.isClosed())
{
ArrayList<String> perms = new ArrayList<String>();
perms.add("user_likes");
perms.add("user_birthday");
perms.add("read_friendlists");
Session.OpenRequest openRequest …Run Code Online (Sandbox Code Playgroud) 我有一个SettingsActivity地方有几个选项,包括寻找Facebook好友和退出.因此,当用户选择找到她的Facebook好友时,她将被发送到另一个活动,我让她使用她的Facebook帐户登录并保存她的访问令牌.然后,当她选择退出时,她的访问令牌将被清除.问题是,我的logout方法与我创建会话的方法没有写在同一个活动中,所以当我尝试这个时:
Session session = Session.getActiveSession();
if (!session.isClosed()) {
session.closeAndClearTokenInformation();
}
Run Code Online (Sandbox Code Playgroud)
Logcat积分NullPointerException.然后我尝试了:
Session.setActiveSession(null);
Run Code Online (Sandbox Code Playgroud)
这也不起作用(之前登录的用户的朋友仍然显示,而不是要求新用户登录).
那么我该怎么做才能清除获得的令牌呢?先感谢您.
-编辑-
我认为我用来打开会话的活动有问题.我关注了Facebook的GraphAPISample,这就是我所做的:
public class FacebookFriendsActivity extends FragmentActivity{
private BroadcastReceiver broadcast;
public static Session session;
private boolean pendingRequest;
static final String PENDING_REQUEST_BUNDLE_KEY = "PendingRequest";
private DatabaseHandler db;
private FindFacebookFriends task;
private ProgressBar progress;
private TextView text;
private Button retryBtn;
private ListView userLayout;
private ArrayList<User> userList;
private FollowAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.facebook_friends);
// ... set …Run Code Online (Sandbox Code Playgroud) 我正在使用Facebook SDK for Android,以允许用户注册和使用应用程序.我想获得一些关于用户的基本信息,如用户名和电子邮件.无论如何,我有问题因为我在尝试获取用户电子邮件时遇到空指针异常.
String email = user.getProperty("email").toString();
Run Code Online (Sandbox Code Playgroud)
我假设我收到此错误,因为我没有请求电子邮件权限.我怎么能这样做?
这是完整的代码:
public class RegisterActivity extends ActionBarActivity{
Button btnFacebook;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().hide();
btnFacebook = (Button) findViewById(R.id.btn_facebook);
btnFacebook.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("FACEBOOK", "Prije sesije");
// start Facebook Login
Session.openActiveSession(RegisterActivity.this, true, new Session.StatusCallback() {
// callback when session changes state
@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,
Exception exception) {
Log.d("FACEBOOK", "U call");
if(session.isOpened()){
Log.d("FACEBOOK", "ako je sesija otvorena");
// …Run Code Online (Sandbox Code Playgroud) email android facebook facebook-android-sdk facebook-sdk-3.0
我想用这个简单的应用程序显示我的Facebook名称,该应用程序在点击按钮后登录login().
会话正确打开,但Request.GraphUserCallback不起作用似乎返回null.
当我启动我的应用程序时,LogCat不会显示任何错误,但是user.name()当Graph API返回用户时,我无法在onCompleted上看到我的Toast.
这是我没有导入和没有布局的代码:
public class MainActivity extends Activity {
private Session.StatusCallback statusCallback;
private Request.GraphUserCallback requestGraphUserCallback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "Ci siamo", Toast.LENGTH_SHORT).show();
statusCallback= new SessionStatusCallback();
requestGraphUserCallback = new RequestGraphUserCallback();
}
public void login(View view){
Toast.makeText(getApplicationContext(), "Login", Toast.LENGTH_SHORT).show();
// start Facebook Login
Session.openActiveSession(this, true, statusCallback);
Toast.makeText(getApplicationContext(), "finito login", Toast.LENGTH_SHORT).show();
}
//CLASSE SESSIONE
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) …Run Code Online (Sandbox Code Playgroud) 我正在使用compile 'com.facebook.android:facebook-android-sdk:4.7.0'
和:
<com.facebook.login.widget.LoginButton
android:id="@+id/tutorial_button_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
/>
Run Code Online (Sandbox Code Playgroud)
有没有办法让它看起来物化或更酷?
我的项目有些错误.我是Android初学者.当我尝试编译我的应用程序时,我收到以下错误
错误:任务':app:transformClassesWithDexForDebug'的执行失败.com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'C:\ Program Files\Java\jdk1.8.0_25\bin\java.exe''以非零退出值2结束
我正在使用Parse SDK登录Facebook,但在这一刻,我只在我的应用程序中使用此代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// [Optional] Power your app with Local Datastore. For more info, go to
// https://parse.com/docs/android/guide#local-datastore
Parse.enableLocalDatastore(this);
Parse.initialize(this);
Run Code Online (Sandbox Code Playgroud)
我的build.gradle是:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.daniele.myapplication"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.parse:parse-android:1.+' …Run Code Online (Sandbox Code Playgroud) java parsing android facebook-android-sdk android-gradle-plugin
在Android Studio中,使用facebook SDKGraphRequest和令牌,我可以获得除性别之外的帐户信息。
这是我尝试过的脚本:
GraphRequest request = GraphRequest.newMeRequest(token, (object, response) -> {
Log.e("fbLoginActivity", object.toString());
String fbId;
String fbEmail;
String fbFirst_name;
String fbLast_name;
String fbBirthday;
String fbGender;
String fbPhoto;
try {
String fbId = object.getString("id");
String fbEmail = object.getString("email");
String fbFirst_name = object.getString("first_name");
String fbLast_name = object.getString("last_name");
String fbBirthday = object.getString("birthday");
String fbGender = object.getString("gender"); // <-- ERROR, but when I comment this line, it works (without gender data)
String fbPhoto = "http://graph.facebook.com/" + fbId + "/picture?type=large";
} catch …Run Code Online (Sandbox Code Playgroud) android facebook-android-sdk facebook-login firebase facebook-sdk-4.0
当我使用 5.9.0 或最新的 Facebook Android SDK 编译 .AAB 并尝试将其上传到 Google Play Console 时,会发生错误。
您的应用程序包针对以下无法识别的语言:fb。支持的语言代码列表可以在 IANA 注册表中找到。可以使用 resConfigs Gradle 属性排除由第三方库导致的无效语言。
我认为这是因为一个名为“values-fb”的文件夹,该文件夹包含一些文件,通常用于翻译。但是,这个“fb”不是 IANA.org 允许的语言。 https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
有什么办法解决吗?