![](/img/trans.png)
[英]Android app with Facebook SDK 3 doesn't login after sign the app
[英]Facebook Android API doesn't return to app after login
我一直在尝试使 Facebook 登录与 Android API 一起工作一段时间......我已经尝试了几个教程并搜索了很多但无法解决我的问题......
我正在尝试在我的应用程序上进行简单的登录...登录有效...当我单击登录按钮时会打开 facebook 应用程序或 webviewer,但是在登录帐户并授予权限后,我的应用程序没有返回屏幕...... Facebook UI 只是关闭,什么也没有发生......
这是我的代码:
package com.trucounter.crimemap.app.activities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.facebook.FacebookException;
import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;
import com.facebook.widget.LoginButton;
import com.trucounter.crimemap.app.R;
import java.util.Arrays;
/**
* Created by Gabriel on 19/04/14.
*/
public class LoadActivity extends Activity {
private String TAG = "LoadActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.load_layout);
LoginButton loginButton = (LoginButton)findViewById(R.id.loginButton);
loginButton.setOnErrorListener(
new LoginButton.OnErrorListener()
{
@Override
public void onError(FacebookException error)
{
Log.i(TAG, "Error: " + error.getMessage());
}
}
);
//Setting permission list
loginButton.setReadPermissions(Arrays.asList("basic_info","email"));
//Session state callback event
loginButton.setSessionStatusCallback(
new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
if(session.isOpened())
{
Log.i(TAG, "Access Token: " + session.getAccessToken());
Request meRequest = Request.newMeRequest(
session,
new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if(user != null)
{
Log.i(TAG, "User ID: " + user.getId());
Log.i(TAG, "Email: " + user.asMap().get("email"));
}
}
}
);
meRequest.executeAsync();
}
}
}
);
}
@Override
protected void onPause() {
super.onPause();
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
}
我在日志上什么也没有...
我发现了类似的问题,但没有一个有效的解决方案
提前致谢
您可以查看Facebook SDK示例。 他们会帮助。 但是下面的代码为我工作。
private Session.StatusCallback statusCallback = new SessionStatusCallback();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
Session session = new Session(getApplicationContext());
Session.setActiveSession(session);
session.openForRead(new Session.OpenRequest(MyActivity.this).setDefaultAudience(SessionDefaultAudience.ONLY_ME).setPermissions(Arrays.asList("user_birthday", "email")).setCallback(statusCallback));
Session.setActiveSession(session);
onSessionStateChange();
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange();
}
}
private void onSessionStateChange() {
Session session = Session.getActiveSession();
if(session != null){
if (session.isOpened()){
Request getMe = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if(user != null){
finish();
}
}
}
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
希望这会有所帮助。
我正在使用facebook,twitter和linkedin登录的socialauth库。 一切正常。
从此链接https://github.com/3pillarlabs/socialauth-android下载Socialauth库,然后在您的工作空间中导入customUI示例。 运行此演示。 如果您在掌握此代码方面遇到任何困难,请问我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.