最新的Android SDK的Facebook登录的工作实例 [英] Working example of latest android facebook sdk login
问题描述
我工作的自定义Facebook的登录按钮,我发现很少有源(尤其是工作code为例)的最新Facebook的Android SDK中。我花了一整天,但仍是code不工作。我不知道是否有任何的工程实例或您的项目code:
I am working on custom facebook login button, I found that there is little source (especially working code example) about the latest facebook android sdk. I spent all day but still the code is not working. I wonder if there is any project example or your project code of:
- 在Facebook登入:
- 共享会议等活动/片段(这样我就可以检查任何地方的应用程序的登录/注销状态)
- 后壁
- 注销
下面是我的code,但它实际上返回非登录状态,即使我logined
Here are my code, but it actually return non-login status even I am logined
登录:
public class Login {
private final static String TAG = "FaceBookLogin";
public Context ctx;
public Session fb_session;
public Login(Context _ctx) {
ctx = _ctx;
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
fb_session = Session.getActiveSession();
if(fb_session == null)
fb_session = Session.openActiveSessionFromCache(ctx);
}
public void checkLogin() {
printHashKey();
if (fb_session != null && fb_session.isOpened()) {
Log.i(TAG, "Facebook Login State");
} else {
if (fb_session == null)
fb_session = new Session(ctx);
Session.setActiveSession(fb_session);
ConnectToFacebook();
Log.i(TAG, "Facebook Not login State");
}
}
public void printHashKey() {
try {
PackageInfo info = ctx.getPackageManager().getPackageInfo("com.project.hkseven",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d(TAG,
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
Log.d(TAG,""+e);
} catch (NoSuchAlgorithmException e) {
Log.d(TAG,""+e);
}
}
private void ConnectToFacebook() {
Session session = Session.getActiveSession();
if(session == null)
session = Session.openActiveSessionFromCache(ctx);
if (!session.isOpened() && !session.isClosed()) {
Log.i(TAG, "ConnectToFacebook if");
OpenRequest newSession = new Session.OpenRequest((Activity) ctx);
newSession.setCallback(callback);
session.openForRead(newSession);
try {
Session.OpenRequest request = new Session.OpenRequest((Activity) ctx);
request.setPermissions(Arrays.asList("email","publish_stream","publish_actions"));
} catch (Exception e) {
Log.d(TAG,""+e);
e.printStackTrace();
}
} else {
Log.i(TAG, "ConnectToFacebook else");
Session.openActiveSession((Activity) ctx, true, callback);
}
}
private Session.StatusCallback callback = new Session.StatusCallback() {
public void call(final Session session, final SessionState state,
final Exception exception) {
Log.d(TAG,"callback" + state);
onSessionStateChange(session, state, exception);
}
};
private void onSessionStateChange(final Session session,
SessionState state, Exception exception) {
Log.i(TAG, "state change");
if (session != null && session.isOpened()) {
Log.i(TAG, "Change to Facebook Login");
}
}
}
任何形式的帮助是AP preciate,感谢好心帮
Any kind of help is appreciate , thanks for kindly help
推荐答案
首先安装最新的SDK,做这样的事情:
First of all install latest sdk and do something like this:
根据〜\ Facebook的SDK \ Facebook的Android的SDK-3.5.2 \样本。
Under ~\FaceBook-Sdk\facebook-android-sdk-3.5.2\samples.
您会发现无论你已经张贴了样品。但可能这是行不通的。所以,你需要做的,使其运行是:
You will find the samples of whatever you have posted. But may be It will not work. So what you have to do to make it run is:
请在Facebook端应用程序。让您的fb_api_key从那里,并把该项目从样本得到的。
Make application on Facebook side. Get your fb_api_key from there and put in the project you get from samples.
这篇关于最新的Android SDK的Facebook登录的工作实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!