sv_*_*an5 5 android facebook facebook-android-sdk facebook-login
我想在我的Android应用程序中集成Facebook登录。我正在使用Facebook-sdk-4.4.0。使用LoginManager类方法。但是我在运行以下代码时遇到问题-
FacebookSdk.sdkInitialize(getApplicationContext());
callbackmanager = CallbackManager.Factory.create();
// Set permissions
LoginManager.getInstance().logInWithReadPermissions((Activity)getContext(), Arrays.asList("email", "public_profile"));
LoginManager.getInstance().registerCallback(callbackmanager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject userInfo, GraphResponse graphResponse) {
try {
FacebookClientController.setUserId(userInfo.optString(ID));
FacebookClientController.setDisplayName(userInfo.optString(NAME));
FacebookClientController.setEmailAddress(userInfo.optString(EMAIL));
JSONObject picJson = userInfo.getJSONObject(PICTURE).getJSONObject("data");
FacebookClientController.setProfilePicUrl(picJson.optString("url"));
Log.d(LOGTAG, "\nUsername :" + FacebookClientController.getDisplayName());
Log.d(LOGTAG, "\nEmail :" + FacebookClientController.getEmailAddress());
Log.d(LOGTAG, "\nUserId :" + FacebookClientController.getUserId());
Log.d(LOGTAG, "\nProfilePicUrl :" + FacebookClientController.getProfilePicUrl());
} catch (JSONException e) {
Log.d(LOGTAG, "Json Error");
}
}
}
);
Bundle parameters = new Bundle();
parameters.putString(FIELDS, FB_REQUEST_FIELDS);
request.setParameters(parameters);
GraphRequest.executeBatchAsync(request);
Toast.makeText(getContext(), "Login successful" + loginResult.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Log.d(LOGTAG, "On cancel");
}
@Override
public void onError(FacebookException error) {
Log.d(LOGTAG, error.toString());
}
});
}
Run Code Online (Sandbox Code Playgroud)

我在应用程序中得到的是左侧屏幕,而不是在运行上述代码时应显示的右侧屏幕。谁能告诉我问题出在哪里?Logcat:
--------- / dev / log / main的开头
I / AppHost.Android(10873):用于处理onActivityResult的注册侦听器:com.example.office.docsui.common.SignInController $ 5
--------- / dev / log / system的开头
I / ActivityManager(449):从pid 10873开始u0 {act = NATIVE_WITH_FALLBACK cmp = com.example.office.powerworld / com.facebook.FacebookActivity(有其他功能)}
I / TelemetryLifeCycleState(10873):活动暂停开始。活动:1099625720,PPTActivity,AppState = 3
I / ActivityManager(449):从pid 10873开始u0 {act = NATIVE_WITH_FALLBACK cmp = com.example.office.powerworld / com.facebook.FacebookActivity(有其他功能)}
I / TelemetryLifeCycleState(10873):活动暂停结束。活动:1099625720,PPTActivity,AppState = 2
I / TelemetryLifeCycleState(10873):已创建活动。活动:1107534680,com.facebook.Facebook活动
I / AppHost.Android(10873):onActivityStarted,foregroundActivityCount = 1,mEventsEnabled = true,mResumeEnabled = false
I / AppHost.Android(10873):这不是办公室活动:: com.facebook.FacebookActivity
I / TelemetryLifeCycleState(10873):活动恢复开始。活动:1107534680,com.facebook.FacebookActivity,AppState = 2
I / TelemetryLifeCycleState(10873):活动恢复结束。活动:1107534680,com.facebook.FacebookActivity,AppState = 3,suspendedTime = 54215
I / TelemetryLifeCycleState(10873):活动暂停开始。活动:1107534680,com.facebook.FacebookActivity,AppState = 3
I / TelemetryLifeCycleState(10873):活动暂停结束。活动:1107534680,com.facebook.FacebookActivity,AppState = 2
I / TelemetryLifeCycleState(10873):已创建活动。活动:1107673504,com.facebook.Facebook活动
D / dalvikvm(10873):GC_FOR_ALLOC释放了2064K,20%释放了8974K / 11096K,暂停了27ms,总计30ms
I / AppHost.Android(10873):onActivityStarted,foregroundActivityCount = 1,mEventsEnabled = true,mResumeEnabled = false
I / AppHost.Android(10873):这不是办公室活动:: com.facebook.FacebookActivity
I / TelemetryLifeCycleState(10873):活动恢复开始。活动:1107673504,com.facebook.FacebookActivity,AppState = 2
I / TelemetryLifeCycleState(10873):活动恢复结束。活动:1107673504,com.facebook.FacebookActivity,AppState = 3,suspendedTime = 54303
D / mali_winsys(10873):new_window_surface返回0x3000
D / mali_winsys(10873):new_window_surface返回0x3000
D / mali_winsys(10873):new_window_surface返回0x3000
D / mali_winsys(10873):new_window_surface返回0x3000
I / Keyboard.Facilitator(614):onFinishInput()
I / ActivityManager(449):显示com.example.office.powerworld / com.facebook.Facebook活动:+ 346ms
I / ActivityManager(449):显示com.example.office.powerworld / com.facebook.Facebook活动:+ 346ms
D / mali_winsys(10873):new_window_surface返回0x3000
D / mali_winsys(10873):new_window_surface返回0x3000
I / K2_ULS(10873):2015/07/21 17:24:38.293 PPTDROID(0x2a79)0x40066154示例powerworld AppHost PLM a2k0b中PauseHandlerActivityLifecycleCallbacks:onActivitySaveInstanceState被调用
I / Keyboard.Facilitator(614):onFinishInput()
W / InputMethodManagerService(449):窗口已经聚焦,忽略了com.android.internal.view.IInputMethodClient$Stub$Proxy@4227f090 attribute=android.view.inputmethod.EditorInfo@423ba3a8的令牌,令牌= android.os.BinderProxy @ 41f633d8
试试这个
LoginButton loginButton;
CallbackManager callbackManager;
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
profile.getProfilePictureUri(315, 315);
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.v("LoginActivity", response.toString());
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
e.printStackTrace();
}
});
Run Code Online (Sandbox Code Playgroud)
并覆盖下面的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
并在清单中定义它
<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"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |