当我使用Facebook的 Android SDK单点登录时,我得到一个完全无用的页面.
"You have already authorized app. Press "Okay" to continue.

此页面会破坏用户体验.如何删除此屏幕?

提前致谢.

注意:如果FB应用程序安装在设备中,我们将不会看到此问题.仅当FB应用程序在设备中不可用时才会引发此问题.

解决方法

我正在使用最新的Facebook SDK 3.6我相信并且已经在HTC One& amp; galaxy s3 mini.此页面在任何时候都不会显示给我.我在这里遵循API指南……

https://developers.facebook.com/docs/facebook-login

这是代码…也许这可能会有所帮助.

public class LoginHandlerFrag extends Fragment {

    private UiLifecycleHelper uiHelper;
    private static final String TAG = "HomeFragment";
    // private ProfilePictureView profilePictureView;

    private Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(Session session,SessionState state,Exception exception) {
            onSessionStateChange(session,state,exception);
        }
    };

    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_login,container,false);

        LoginButton authButton = (LoginButton) view
                .findViewById(R.id.authButton);

        authButton.setReadPermissions(Arrays.asList("email","user_location","user_birthday","user_likes","user_photos"));
        authButton.setFragment(this);

        Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

        return view;
    }

    private void makeMeRequest(final Session session) {
        // Make an API call to get user data and define a
        // new callback to handle the response.
        Request request = Request.newMeRequest(session,new Request.GraphUserCallback() {
                    @Override
                    public void onCompleted(GraphUser user,Response response) {

                        // If the response is successful
                        if (session == Session.getActiveSession()) {
                            if (user != null) {
                                // profilePictureView.setProfileId(user.getId());
                            }
                        }
                        if (response.getError() != null) {
                            // Handle errors,will do so later.
                        }
                    }
                });
        request.executeAsync();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        uiHelper = new UiLifecycleHelper(getActivity(),callback);
        uiHelper.onCreate(savedInstanceState);
    }

    private void onSessionStateChange(Session session,Exception exception) {
        session = Session.getActiveSession();
        SharedPreferences storedPrefs = PreferenceManager
                .getDefaultSharedPreferences(getActivity().getApplicationContext());
        SharedPreferences.Editor editor = storedPrefs.edit();
        editor.putBoolean("userLoggedTracker",true);
        editor.commit();

        if (state.isOpened()) {
            Log.i(TAG,"Logged in...");
            makeMeRequest(session);
            editor.putBoolean("userLoggedTracker",false);
            editor.commit();
            getView().setVisibility(View.GONE);

        } else if (state.isClosed()) {
            Log.i(TAG,"Logged out...");
            editor.putBoolean("userLoggedTracker",true);
            editor.commit();
            getView().setVisibility(View.VISIBLE);
        }
    }

    @Override
    public void onResume() {
        super.onResume();

        Session session = Session.getActiveSession();
        if (session != null && (session.isOpened() || session.isClosed())) {
            onSessionStateChange(session,session.getState(),null);
        }
        uiHelper.onResume();
    }

    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        uiHelper.onActivityResult(requestCode,data);
    }

    @Override
    public void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }
}

如何避免在Android Facebook SDK中显示已经授权的应用程序对话框的更多相关文章

  1. HTML5 Web缓存和运用程序缓存(cookie,session)

    这篇文章主要介绍了HTML5 Web缓存和运用程序缓存(cookie,session),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. iOS Swift上弃用后Twitter.sharedInstance().session()?. userName的替代方案

    解决方法如果您仍在寻找解决方案,请参阅以下内容:

  3. 使用Fabric SDK iOS访问Twitter用户时间线

    我试图在这个问题上挣扎两天.我正在使用FabricSDK和Rest工具包,试图为Twitter使用不同的RestAPIWeb服务.我可以使用具有authTokenSecret,authToken和其他值的会话对象的TWTRLogInButton成功登录.当我尝试获取用户时间线时,我总是得到失败的响应,作为:{“errors”:[{“code”:215,“message”:“BadAuthentic

  4. openURL崩溃:iOS 9中可能存在Facebook SDK错误

    也许Facebook的SDK在这个特例上有错误?解决方法我找到了答案看起来它只是一个发布模式问题.通过启用Xcode运行发布版本,我能够调试我的问题.它是由参数sourceApplication引起的,在发布模式下显然需要解包.不知道为什么,但至少我得到它的工作.

  5. ios – 如何从Apple Watch调用iPhone上定义的方法

    有没有办法从Watchkit扩展中调用iPhone上的类中定义的方法?根据我的理解,目前在Watchkit和iPhone之间进行本地通信的方法之一是使用NSUserDefaults,但还有其他方法吗?

  6. ios – Facebook应用程序邀请对话框无效

    任何该功能的工作示例都将非常感激.解决方法您的代码很好,当您发布应用程序时,此功能将实际工作,因为某些Facebook集成需要在使用前获得批准.在状态和审核部分提交您的应用以获得批准

  7. 检测是否在iOS / Android上的本机Facebook应用程序中加载了网页

    然后我的链接可以启动浏览器,我的网络应用程序继续在Facebook本机应用程序中运行.解决方法这在JavaScript中适用于我:

  8. ios – 检查用户是否已修改Facebook的App权限

    我正在使用Facebook创建新用户或登录Parse.>用户使用Facebook登录登录应用程序>用户提示接受权限.>用户接受应用程序请求的所有权限.4.用户删除了应用程序的权限我想知道我们检查用户是否已更改Facebook中应用程序的授权状态的方式是什么.我该如何检查?我们怎么知道它不再连接?

  9. ios Facebook登录:com.facebook.sdk:ErrorLoginFailedReason = invalid_client

    我用我的iosApp测试了我的FB应用已经有一段时间了,只使用沙盒应用和我的管理员帐户;它工作得很好.现在,我已经在我的fb应用程序中禁用了沙箱模式,让我的一些FB朋友测试应用程序.每当他们尝试从iPhone应用程序连接时,他们会得到以下显示:“myApp错误配置Facebook登录”并且错误是:com.facebook.sdk:ErrorLoginFailedReason=invalid_cli

  10. 如何在iOS和FB SDK 3.7上处理过期的Facebook访问令牌

    解决方法我这样做,FB自动重新创建会话.如果FB已更改使用条款或其他内容,则会向用户显示登录对话框.

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部