Android 용 FB API 3.0을 사용하고 있으며 적절한 방식으로 세션을 설정하려고합니다.안드로이드 FB API 3.0 프래그먼트가있는 세션 설정
하지만 뭔가 잘못하고있는 것 같아요. 뭔가 놓치고있는 것 같아요. 내 실행 활동에서
, 난 이미 세션이 있는지 확인하고 존재하지 않는 경우 나는 (FB의 예에서와 같이) 새로 만들 :이 시점에서
Settings.addLoggingBehavior(LoggingBehaviors.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session != null){
String sesija = session.toString();
Log.w ("ss", sesija);}
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, MyGlobals.INSTANCE.statusCallback, savedInstanceState);
Log.w("No Session found", "Loading saved session as it exists");
}
if (session == null) {
session = new Session(this);
Log.w("No Session found", "CreatingNewSession");
String sesija2 = session.toString();
Log.w ("ss2", sesija2);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this).setCallback(MyGlobals.INSTANCE.statusCallback));
Log.w("There is an active session", "Active Session Exists");
}
}
내 로그이 말한다 :
:10-24 09:11:52.284: W/ss(1404): {Session state:CREATED, token:{AccessToken token: permissions:[}, appId:xxxxxx}
내 조각에서 다음
,이 코드를 사용하여 페이스 북에 로그온 할 (APPID 올바른 것입니다)
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
Log.w("Session is not opend", "Session is not closed");
session.openForRead(new Session.OpenRequest(getActivity()).setCallback(MyGlobals.INSTANCE.statusCallback));
} else {
Session.openActiveSession(getActivity(), true, MyGlobals.INSTANCE.statusCallback);
Log.w("Open Active Session", "Status Callback");
}
이 시점에서 FB webview가 나타납니다. 사용자 이름을 설정하고 전달하고 친절하게 작동 한 다음 사라집니다.
이제 저는 일종의 응답이 없으며 TOKEN이 암송했습니다. 동일한 버튼에서 다시 로그인하면 내 앱이 다운됩니다. ,
10-24 09:12:31.944: W/ss(1404): {Session state:OPENING, token:{AccessToken token: permissions:[}, appId:xxxxxx}
내가이 FB에서 제공 SessionLoginExample에 비교하면 나는 거기 : 로그에서
나는 다음이이 나는대로 뭔가를 잘못하고 있어요 의미10-24 09:08:50.004: W/ss(1356): {Session state:OPENED, token:{AccessToken token:AAAFaKtb7Pg4BALYg4B5eosa0ZAE9ZAXB0ZBMFDJdNbsDsZAkGJUfKtGs71OEJikDxT2VBfo4QMXiNASz23ZAa6D76eUxW0mZAMa013HP2kxgZDZD permissions:[}, appId:xxxxxxx}
반환 된 AccessToken을 catch하지 않으며 제대로 저장되지 않습니다.
그건 내가 잘못 생각한 것이지만, 적절한 방법으로 세션 정보를 읽는 방법, 또는 조각 내에서 토큰 정보를 어디에서 붙잡고 저장해야 하는지를 이해할 수 없습니다. 이 같이
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Boolean session = Session.getActiveSession().onActivityResult(getSherlockActivity(), requestCode, resultCode, data);
}
이 예에서 "onActivityResult를"했지만, 그것은 아무것도하지 않는 것 같습니다 :
나는 조각에 넣어하려고 노력했다.두 가지를 요약하면 다음과 같습니다. 런처 활동 뒤에 세션을 만듭니다. 그런 다음 FB app이 설치되어 있지 않으면 Tab4 (설정)에서 사용자가 webview를 사용하여 FB에 로그온 할 수 있어야합니다. 그런 다음 Tab1과 Tab2 사용자는 Instagram에서와 같이 FB로 이미지를 공유 할 수 있어야합니다. 앱이 설치되어있는 경우 탭 4를 사용하지 않도록 설정하고 Tab1과 Tab2를 사용하여 사용자가 공유 할 수 있도록합니다.
Tnx.
이 해결 : 쓰여지지는 않았지만 잘 알려 져야하는 것. FB 인증이 수행되면 토큰을 세션과 함께 저장하려면 "On Activity Result"코드를 실행해야합니다. 그러나 내가하는 것처럼 단편과 탭을 다루는 경우 "onActivityResult"함수는 단편 코드 내에서 실행되지 않지만 단편/탭을 관리하는 활동에서 실행되어야합니다.
이 필요하다는 다소 좋네요. 어떤 행동을 시도합니까? – ania
예, 알아 냈습니다. 문제는 프래그먼트가 "onActivityResult"를 호출하지 않지만 탭과 프래그먼트를 처리하는 주 활동입니다. – Balkyto
예, 조각에 대한 일반적인 문제입니다. 그게 효과가있어! – ania