标签: facebook-sdk-4.0

Facebook SDK上出现"ANDROID_BUILD_SDK_VERSION"错误

我在导入Facebook SDK时坚持在HelloFacebookSample上获得相同的错误.

错误:(8,0)无法在项目':HelloFacebookSample'上找到属性'ANDROID_BUILD_SDK_VERSION'.

我知道错误与HelloFacebookSample有关,我试图分配'ANDROID_BUILD_SDK_VERSION'= 20(MY SDK VERSION).它仍然会发出同样的错误.

这是一个快照

在此输入图像描述

这个错误正在扼杀我的生命.我怎样才能摆脱这个错误?

sdk android facebook android-studio facebook-sdk-4.0

4
推荐指数
1
解决办法
1万
查看次数

Android,Facebook登录按钮导致崩溃(SDK 4.0.0)

在我的活动.xml文件中,我包含了Facebook登录按钮(来自文档)

    <com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" />
Run Code Online (Sandbox Code Playgroud)

我马上得到一个警告说

The following classes could not be found:
    - com.facebook.login.widget.LoginButton
Run Code Online (Sandbox Code Playgroud)

文档说到

使用完整的类名com.facebook.widget.LoginButton将按钮添加到布局XML文件中

但改变顶线没有任何作用.应用程序立即崩溃,无需打开,日志cat中没有记录任何内容(在外部设备上进行测试).

删除按钮或将其更改为

    <Button
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" />
Run Code Online (Sandbox Code Playgroud)

停止崩溃,但这是我第一次使用Facebook SDK,不知道常规按钮是否有效.

先感谢您.

android facebook-login facebook-sdk-4.0

4
推荐指数
1
解决办法
3400
查看次数

Android Facebook SDK - "共享"对话框不响应取消回调

我在我的Android应用程序上使用Facebook sdk 4.0,我发现了这个问题:

- 当我分享一个帖子时,我可以看到facebook界面,我可以发布它并完美取消它.我注册了回调,但是如果按下取消按钮,则不会调用onCancel回调,不发布帖子,而是调用onSuccess回调.但是,如果我触摸关闭按钮,一切正常.

这是我的代码:

 private void fbOnShare(){

    ShareLinkContent shareContent = new ShareLinkContent.Builder()
            .setContentTitle("The Simpson!")
            .setContentUrl(Uri.parse("http://www.foxplay.com/ar/show/6980-los-simpson?gclid=CPa-7N-y7MUCFYMSHwodNLYAKQ"))
            .build();


    this._btnShare = (ShareButton)findViewById(R.id.share_button);
    this._btnShare.setShareContent( shareContent );


    _btnShare.registerCallback( this._fbCallbackManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {

            Log.v("MyApp", "Share success!"); //Showed if I press the share or the cancel button

        }

        @Override
        public void onCancel() {
            Log.v("MyApp", "Share canceled"); //Only showed when I press the close button
        }

        @Override
        public void onError(FacebookException e) {
            Log.v("MyApp","Share error: " + e.toString());
        }

    });
} …
Run Code Online (Sandbox Code Playgroud)

android facebook facebook-sdk-4.0

4
推荐指数
1
解决办法
3977
查看次数

Facebook:在Android上刷新AccessToken

他们在AccessToken文档中说:"使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天.当使用您的应用程序的人向Facebook提出请求时,这些令牌将每天更新一次.服务器".
这是否意味着只有当Facebook服务器的请求来自客户端Android应用程序时(我不确定如何解释"......使用您的应用程序的人..."),那么访问令牌将被刷新?
在我的应用程序中,我使用检索访问令牌AccessToken.getCurrentAccessToken(),将访问令牌发送到我的服务器,服务器向Facebook的服务器发出请求,目的是验证收到的访问令牌.
在这种情况下,是否还会刷新访问令牌?(在这种情况下,服务器正在向FB的服务器发出请求,而不是直接"使用我的应用程序的人")

  • 如果是,Android客户端应用程序中的Facebook SDK如何知道我的服务器向Facebook的服务器发出了请求?AccessToken.getCurrentAccessToken()Android客户端是否返回刷新的访问令牌?

谢谢

编辑:这可以帮助其他人节省时间:我发现访问令牌在初始化FacebookSDK时会在某些条件下自动刷新(Facebook文档没有清楚地解释访问令牌是如何刷新的 - 请参阅上面的问题).
请注意我使用的是FacebookSDK 4.0 for Android.
按照下面的步骤操作:

  1. FacebookSDK.sdkInitialize(Context, InitializeCallback)

    if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() == null)

  2. Profile.fetchProfileForCurrentAccessToken()

  3. Utility.getGraphMeRequestWithCacheAsync()

    GraphRequest graphRequest = getGraphMeRequestWithCache(accessToken); graphRequest.setCallback(graphCallback); graphRequest.executeAsync();

  4. ... executeBatchAsync(GraphRequestBatch requests)
    GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(requests); asyncTask.executeOnSettingsExecutor();
  5. GraphRequestAsyncTask doInBackground()方法

if (connection == null) { return requests.executeAndWait(); } else { return GraphRequest.executeConnectionAndWait(connection, requests); }

对于这两种情况,代码将以此方法结束:

public static List<GraphResponse> executeConnectionAndWait(
            HttpURLConnection connection,
            GraphRequestBatch requests)
Run Code Online (Sandbox Code Playgroud)
  1. 注意AccessTokenManager.getInstance().extendAccessTokenIfNeeded();线.顾名思义,每天最多扩展一次访问令牌.

facebook facebook-graph-api facebook-authentication facebook-access-token facebook-sdk-4.0

4
推荐指数
1
解决办法
4573
查看次数

如何解析Facebook的下一页(SDK 4.0)android中的图形响应?

我正在获取使用我的Android应用程序并在listview中显示它们的朋友列表.我们从通话中得到的回应:

 GraphRequestAsyncTask graphRequest = new GraphRequest(
                AccessToken.getCurrentAccessToken(),
                "/me/friends",
                null,
                HttpMethod.GET,
                new GraphRequest.Callback() {
                    public void onCompleted(GraphResponse response) {



                    }
                }
        ).executeAsync();
Run Code Online (Sandbox Code Playgroud)

 {
  "data": [
    {
      "name": "Sanjeev Sharma",
      "id": "10XXXXXXXXXX40"
    },
    {
      "name": "Avninder Singh",
      "id": "1XXXXX30"
    },
    {
      "name": "Saikrishna Tipparapu",
      "id": "17XXXXXX98"
    },
    {
      "name": "Perfekt Archer",
      "id": "100XXXXX29"
    },
    {
      "name": "Shathyan Raja",
      "id": "10XXXXX0"
    },
    {
      "name": "Kenny Tran",
      "id": "10XXXXX36164"
    },
    {
      "name": "Lahaul Seth",
      "id": "100XXXXX161"
    },
    {
      "name": "Bappa Dittya",
      "id": "10XXXXX24" …
Run Code Online (Sandbox Code Playgroud)

android facebook facebook-graph-api facebook-sdk-4.0 facebook-graph-api-v2.3

4
推荐指数
1
解决办法
4834
查看次数

不推荐使用的FacebookSdk方法抛出RuntimeException

我有FacebookSdk.sdkInitialize(getApplicationContext())sdkInitialize()显示为已弃用的位置.根据这篇文章,我们可以删除该行.但之后我得到以下错误AppEventsLogger.activateApp(this):

AndroidRuntime: FATAL EXCEPTION: main                                                                              Process: com.daimler.moovel.android:auth, PID: 4011                                java.lang.RuntimeException: Unable to create application com.daimler.moovel.android.DebugApplication: The Facebook sdk must be initialized before calling activateApp                                              at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5879)                                             at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: The Facebook sdk must be initialized before calling activateApp
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:226)
at com.facebook.appevents.AppEventsLogger.activateApp(AppEventsLogger.java:208)
Run Code Online (Sandbox Code Playgroud)

那我错过了什么?

android facebook-android-sdk android-facebook facebook-sdk-4.0

4
推荐指数
1
解决办法
2775
查看次数

无法构建模块“FBSDKShareKit”

我正在升级一些 Pod,即支持ParseLiveQuery. 我现在在我的一个头文件中遇到错误

无法构建模块“FBSDKShareKit”

同样在我的错误中:

在此处输入图片说明

播客文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.3'
inhibit_all_warnings!
use_modular_headers!

workspace 'myApp'

target 'myApp' do
    pod 'ROGoogleTranslate'
    pod 'Parse', '1.16.0'
    pod 'Parse/FacebookUtils'
    pod 'ParseUI', '1.2.0'
    pod 'ParseLiveQuery'
    pod 'SocketRocket'
    pod 'Bolts', '1.9.0'
    pod 'Bolts-Swift', :git => 'https://github.com/BoltsFramework/Bolts-Swift', :commit => 'e9baa72d04521c3b25ef4fa6fef12b340953ee02'
    pod 'JSQMessagesViewController', '7.3.3'
    pod 'FBSDKCoreKit', '~> 4.28.0'
    pod 'FBSDKShareKit', '~> 4.28.0'
    pod 'FBSDKLoginKit', '~> 4.28.0'
end
Run Code Online (Sandbox Code Playgroud)

我已经删除了派生数据、清理、清除了我的 Pods 目录和 Podfile.lock。有关如何修复的任何建议?

编辑:这是由于use_modular_headers!在看到此错误后包含源于我的行为的内容引起的

[!] 以下 Swift pod 还不能集成为静态库:

Swift podParseLiveQuery依赖于ParseBolts …

facebook parse-platform facebook-sdk-4.0 fbsdk fbsdksharekit

4
推荐指数
1
解决办法
2141
查看次数

Facebook返回错误'(#200)即使在获得"发布操作"许可后,也需要扩展权限:publish_actions'

嗨,我获得了publish_actionsFacebook应用程序的许可.

但是,当任何用户访问此应用程序时,它不会提示"代表您在Facebook上发布"权限.除非当任何用户试图使用此应用程序在Facebook上发表评论时,Facebook会返回错误说明:

'(#200)需要扩展权限:publish_actions'OR'远程服务器返回错误:(403)Forbidden'.

任何人都可以帮助我吗?提前致谢.

facebook-apps facebook-app-requests facebook-app-center facebook-sdk-4.0 facebook-app-settings

3
推荐指数
1
解决办法
2万
查看次数

Android应用中未调用Facebook登录回调

我正在尝试用Facebook和Twitter登录创建一个应用程序.我希望每个登录按钮都在其自己的片段中,完全独立于使用这些按钮的任何活动.所以我试图将onClick自定义按钮的处理程序放在片段本身中.

当我点击它时,它启动了facebook登录活动,但是当我在facebook登录活动中点击OK时,facebook活动关闭但从onActivityResult未被调用.这是我的代码片段.请告诉我哪里出错了

public class FragmentLoginButtonFacebook extends Fragment {

    private static final String LOG_TAG = FragmentLoginButtonFacebook.class.getSimpleName();;
    CallbackManager callbackManager;

    public FragmentLoginButtonFacebook() {
         // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getActivity(), "success", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancel() {
                Toast.makeText(getActivity(), "cancel", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(FacebookException exception) {
                Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public View onCreateView(LayoutInflater …
Run Code Online (Sandbox Code Playgroud)

android android-fragments facebook-login facebook-sdk-4.0

3
推荐指数
1
解决办法
2069
查看次数

在Facebook按钮上添加圆角

我正在尝试自定义Android中的facebook sdk附带的按钮.我希望它有圆角而不是普通的角落,为了实现这一点我从这里尝试了答案,我所做的基本上是我在styles.xml中为我的facebook按钮添加了一个样式:

   <style name="FacebookLoginButton">
    <item name="android:background">@drawable/fbshapebtn</item>
    <item name="android:textSize">18sp</item>
    <item name="android:gravity">center</item>
</style>
Run Code Online (Sandbox Code Playgroud)

作为背景,我从我的drawable中引用了一个xml,我在其中定义了我的角落:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp">
    <corners
        android:bottomRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

这是我的主要布局,其中我引用了我的样式xml.

  <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        style="@style/FacebookLoginButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView"
        android:layout_alignLeft="@+id/button2"
        android:layout_alignStart="@+id/button2"
        android:layout_marginBottom="11dp"
        android:layout_alignRight="@+id/button2"
        android:layout_alignEnd="@+id/button2" />
Run Code Online (Sandbox Code Playgroud)

该按钮似乎没有角落,但它很奇怪,因为我定义的textSize似乎被应用,所以我不知道究竟是什么错.

xml android android-layout facebook-sdk-4.0

3
推荐指数
1
解决办法
2292
查看次数