错误社交验证4.4 ::无效范围:publish_stream.

Kin*_*ses 6 android facebook social-authentication

当我尝试使用SOCIAL AUTH 4.4 连接FACEBOOK API IN ANDROID 时出现此错误.

几天后,一切正常,我可以从我的应用程序将数据发布到Facebook.

现在我在尝试从我的应用程序访问Facebook时收到此错误.

无效的范围:offline_access,publish_stream.此消息仅向开发人员显示.如果存在,您应用的用户将忽略这些权限.请阅读以下文档获取有效权限:https: //developers.facebook.com/docs/facebook-login/permissions

阅读完文档后,我才知道,不允许使用权限offline_access和publish_stream,因此无法再请求.

所以我根据文档替换了我的属性文件.

publish_stream可以被publish_actions取代,offline_access也不见了.

喜欢以下:::

#facebook
graph.facebook.com.consumer_key = XXXXXXXXXXXXX
graph.facebook.com.consumer_secret = XXXXXXXXXXXXXXXXXXXXXXXXXXX
graph.facebook.com.custom_permission = publish_actions,email,user_birthday,user_location
Run Code Online (Sandbox Code Playgroud)

我仍然遇到同样的问题.我错过了哪里..

ven*_*key 1

由于 Facebook 最近更改了太多内部设置,因此最好使用 Facebook SDK 而不是 Social Auth

要开始使用 Facebook sdk,您需要在 Facebook 开发者控制台中创建一个项目,请参阅下面的链接继续

创建一个应用程序下载最新的 facebook sdk并将其导入到您的项目中

导入后将 facebook sdk 设置为 eclipse 的库项目

在 mainfestifile 应用程序标签中添加以下代码

 <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

        <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Run Code Online (Sandbox Code Playgroud)

其中 facebook_app_id 是在开发者控制台中创建项目时生成的应用程序 ID

不要忘记包含互联网权限

然后在您的 Activity 中添加以下代码

//需要声明变量

 CallbackManager callbackManager;
    ShareDialog shareDialog;
Run Code Online (Sandbox Code Playgroud)

//在活动oncreate中

FacebookSdk.sdkInitialize(getApplicationContext());
     callbackManager = CallbackManager.Factory.create();
     shareDialog = new ShareDialog(this);
Run Code Online (Sandbox Code Playgroud)

//例如共享,在按钮的点击列表中添加以下代码片段

ShareLinkContent content = new ShareLinkContent.Builder()
                .setContentUrl(Uri.parse(copyTextToClipBoard()))
                .build();

                shareDialog.show(content);
Run Code Online (Sandbox Code Playgroud)