LoginManager.getInstance().logInWithReadPermissions(LoginFragment.this..
//?! probably problem here, must be activity context getActivity()
は、アクティビティクラスでこのすべてを実装してからの断片からloginningのためのパブリックメソッドを呼び出すLoginFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_login, container, false);
callbackManager = CallbackManager.Factory.create();
facebookLoginButton = (RelativeLayout) rootView.findViewById(R.id.facebook_login_button);
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
if (loginResult.getAccessToken() != null) {
AccessToken.setCurrentAccessToken(loginResult.getAccessToken());
mListener.onFacebookLoginSuccess();
} else {
//Facebook access token not available.
}
}
@Override
public void onCancel() {
Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.login_cancelled_please_try_again), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getActivity(), getActivity().getResources().getString(R.string.login_cancelled_please_try_again), Toast.LENGTH_SHORT).show();
}
});
facebookLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LoginManager.getInstance().logInWithReadPermissions(LoginFragment.this, Arrays.asList("public_profile", "user_friends"));
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
LoginActivity.java
((YourActivity)getActivity()).yourLoginMethod();
だけでなく、このチェック:
private static AccessTokenTracker mAccessTokenTracker;
のOnCreate:拡張アプリケーションクラスに
を
マニフェストで FacebookSdk.sdkInitialize(mContext);
mAccessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
if(currentAccessToken != null){
SettingsService.settings.facebookToken = currentAccessToken.getToken();
SettingsService.saveSettings();
}
}
};
:
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
ユーザビリティの設定について:
public class SettingsModel {
public String facebookToken = "";
//....
}
とクラス:
public class SettingsService {
private static String KEY = "yourDesiredKey";
private static Context mContext;
public static SettingsModel settings;
public SettingsService(){
mContext = LastGrabApplication.getLastGrabContext();
//if(settings == null){
settings = getSettings();
//}
}
public static void saveSettings(){
if(settings == null){
settings = new SettingsModel();
}
SharedPreferences.Editor editor = mContext
.getSharedPreferences(KEY, Activity.MODE_PRIVATE).edit();
Gson gson = new Gson();
String jsonSettings = gson.toJson(settings);
editor.putString("settings", jsonSettings);
editor.commit();
settings = getSettings();
}
public static SettingsModel getSettings() {
SharedPreferences editor = mContext.getSharedPreferences(KEY,
Activity.MODE_PRIVATE);
try{
String jsonSettings = editor.getString("settings","settings");
Gson gson = new Gson();
settings = gson.fromJson(jsonSettings, SettingsModel.class);
}catch (Exception e){
settings = new SettingsModel();
}
return settings;
}
}
注意が活動に実装してください。その後、
public void loginWithFacebook(){
try{
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
}catch(Exception e){}
}
およびフラグメントから呼び出す:
((YourActivity)getActivity()).loginWithFacebook();
あなたがここに – mdDroid
をコードを投稿することができます持っていますアクティビティのonActivityResultを返しました。@ Ramprasad 。 – Lampard
@mdDroid私の質問にコードを追加しました – Ramprasad