我在导入Facebook SDK时坚持在HelloFacebookSample上获得相同的错误.
错误:(8,0)无法在项目':HelloFacebookSample'上找到属性'ANDROID_BUILD_SDK_VERSION'.
我知道错误与HelloFacebookSample有关,我试图分配'ANDROID_BUILD_SDK_VERSION'= 20(MY SDK VERSION).它仍然会发出同样的错误.
这是一个快照
这个错误正在扼杀我的生命.我怎样才能摆脱这个错误?
在我的活动.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 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) 他们在AccessToken文档中说:"使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天.当使用您的应用程序的人向Facebook提出请求时,这些令牌将每天更新一次.服务器".
这是否意味着只有当Facebook服务器的请求来自客户端Android应用程序时(我不确定如何解释"......使用您的应用程序的人..."),那么访问令牌将被刷新?
在我的应用程序中,我使用检索访问令牌AccessToken.getCurrentAccessToken()
,将访问令牌发送到我的服务器,服务器向Facebook的服务器发出请求,目的是验证收到的访问令牌.
在这种情况下,是否还会刷新访问令牌?(在这种情况下,服务器正在向FB的服务器发出请求,而不是直接"使用我的应用程序的人")
AccessToken.getCurrentAccessToken()
Android客户端是否返回刷新的访问令牌?谢谢
编辑:这可以帮助其他人节省时间:我发现访问令牌在初始化FacebookSDK时会在某些条件下自动刷新(Facebook文档没有清楚地解释访问令牌是如何刷新的 - 请参阅上面的问题).
请注意我使用的是FacebookSDK 4.0 for Android.
按照下面的步骤操作:
FacebookSDK.sdkInitialize(Context, InitializeCallback)
if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() == null)
Profile.fetchProfileForCurrentAccessToken()
Utility.getGraphMeRequestWithCacheAsync()
GraphRequest graphRequest = getGraphMeRequestWithCache(accessToken);
graphRequest.setCallback(graphCallback);
graphRequest.executeAsync();
executeBatchAsync(GraphRequestBatch requests)
GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(requests);
asyncTask.executeOnSettingsExecutor();
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)
AccessTokenManager.getInstance().extendAccessTokenIfNeeded();
线.顾名思义,每天最多扩展一次访问令牌.facebook facebook-graph-api facebook-authentication facebook-access-token facebook-sdk-4.0
我正在获取使用我的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
我有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
我正在升级一些 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 pod
ParseLiveQuery
依赖于Parse
和Bolts …
facebook parse-platform facebook-sdk-4.0 fbsdk fbsdksharekit
嗨,我获得了publish_actions
Facebook应用程序的许可.
但是,当任何用户访问此应用程序时,它不会提示"代表您在Facebook上发布"权限.除非当任何用户试图使用此应用程序在Facebook上发表评论时,Facebook会返回错误说明:
'(#200)需要扩展权限:publish_actions'OR'远程服务器返回错误:(403)Forbidden'.
任何人都可以帮助我吗?提前致谢.
facebook-apps facebook-app-requests facebook-app-center facebook-sdk-4.0 facebook-app-settings
我正在尝试用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中的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似乎被应用,所以我不知道究竟是什么错.