在我的应用程序中,我需要在用户的时间轴上发布某些内容.我按照https://developers.facebook.com/docs/howtos/androidsdk/3.0/publish-to-feed/上的官方教程进行了操作.但是在本教程中,他们首先提到了设置Login流程.他们给了一个很好的指导.没关系.
但我想要的方式是,用户只会看到" 分享故事"按钮.如果用户已登录,则应直接发布故事.如果没有,应该遵循正常的登录流程,询问所需的权限,并且应该发布登录回调故事.我不想显式显示Login按钮.
我坚持这一点,因为在文档中,他们提到的任何地方都 <com.facebook.widget.LoginButton .... />用于登录目的.我根本不想使用它,因为这将要求用户进行两次交互.首先点击" 登录"按钮,第二次发布故事,他/她必须点击" 分享故事"按钮.
我无法找到一种方法来检查用户是否未登录并强制他/她先从我的代码块登录.
我的活动是在崩溃时抛出此错误:
java.lang.RuntimeException: Unable to resume activity {com.beerportfolio.beerportfoliopro/com.example.mike.beerportfoliomaterial.MainDrawer2}: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3069)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.IllegalArgumentException: Both context and applicationId must be non-null
at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:273)
at com.facebook.AppEventsLogger.activateApp(AppEventsLogger.java:260)
at com.example.mike.beerportfoliomaterial.MainDrawer2.onResume(MainDrawer2.java:179)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1198)
at android.app.Activity.performResume(Activity.java:5618)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3059)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3098)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2469)
at android.app.ActivityThread.access$900(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Method.java)
at …Run Code Online (Sandbox Code Playgroud) 我正在开发一款Android应用.在我的应用程序中,我正在整合Facebook登录.我之前曾经开发过一次Facebook登录.当我开发这个时候,不会调用Facebook回调函数.我也无法检查错误.我不知道出了什么问题.
我使用Gradle安装了Facebook SDK
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
Run Code Online (Sandbox Code Playgroud)
然后我生成了密钥哈希并在Facebook开发人员设置中设置如下:
这是我的表现
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tonightfootballreport.com.tfr" >
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="tonightfootballreport.model.TfrApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<activity
android:configChanges="orientation|screenSize"
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:configChanges="orientation|screenSize"
android:name=".FacebookConfigActivity"
android:label="Facebook"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="tonightfootballreport.com.tfr.FacebookConfigActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<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" />
<provider android:authorities="com.facebook.app.FacebookContentProvider1817380365215100"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" …Run Code Online (Sandbox Code Playgroud) android facebook facebook-login android-facebook facebook-sdk-4.x
我正在开发一个应用程序,其中我在自定义按钮上进行 Facebook 身份验证。我做的代码如下:
首先,我在我的活动 onCreate() 中将 facebook SDK 初始化为:
// Facebook
FacebookSdk.sdkInitialize(this);
Run Code Online (Sandbox Code Playgroud)
然后我注册回调为:
// Facebook Login
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
// Get facebook data from login
try {
Bundle bundle = new Bundle();
String id = object.getString("id");
URL profile_pic = null;
try {
profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?type=large");
bundle.putString("profile_pic", profile_pic.toString());
} catch (MalformedURLException …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一段时间,并尝试了我能找到的每一个答案都没有成功.我开始相信问题出在android studio版本中.
然而,这就是我所做的:
1 - 我已经下载了facebook sdk
2 - 将sdk复制到我的libs文件夹中,以便项目如下所示:
Run Code Online (Sandbox Code Playgroud)MyProj -app --libs ---facebook ----build.gradle (2) --build.gradle (1) -settings.gradle
3 - 我修改了settings.gradle:
include ':libs:facebook', ':app'
Run Code Online (Sandbox Code Playgroud)
4 - 我将build.gradle(1)修改为:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'me.dm7.barcodescanner:zxing:1.0'
compile 'com.koushikdutta.ion:ion:1.2.4'
compile 'com.google.code.gson:gson:2.2.+'
compile 'com.squareup.picasso:picasso:2.1.1'
compile project(':libs:facebook');
}
Run Code Online (Sandbox Code Playgroud)
5 - …
android facebook include android-facebook android-gradle-plugin
我正在构建一个2层的应用程序: -
1.原生Android应用程序 - 包含通过Facebook + Google登录以减少痛苦登记的能力.
2.使用Spring Boot的Java Server - 典型的MVC端点,例如REST api + UI管理屏幕.
Facebook(FacebookSdk)和Google(GoogleApiClient)登录部分正在使用以下Android依赖项进行工作和测试: -
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile 'com.google.android.gms:play-services-auth:9.0.0'
....
}
Run Code Online (Sandbox Code Playgroud)
API我们有: -
/api/signin- 当用户使用Facebook + Google成功登录并在users数据库表中创建条目时调用.
还有许多其他API端点,例如优惠
/api/offers/<user_id>- 向已注册的用户返回优惠.
我不确定最佳实践方式: -
android应用程序如何对/ api/signin REST端点进行API调用(即哪些标头等可以发送到我认为是没有安全性的端点,因为未注册的用户将会遇到此问题).另外,在usersdb表中可以保存哪些字段?
Android应用程序如何调用例如/ api/offers /已经注册的用户?即当Android应用程序传递时令牌等等?
Spring安全性保护这些端点的最佳实践方法.
假设OAuth 2是要走的路,但任何建议/指针都将受到最多的赞赏.
android spring-security android-facebook spring-boot android-security
在我的Android应用程序中,我使用facebook登录.这是我第一次使用它.
登录功能在发布apk文件中正常工作.另外,我使用keytool,openssl生成了密钥哈希: -
keytool -exportcert -alias "MyAppAlias" -keystore "Path to keystore" |
openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
我在Facebook开发者帐户的App设置中添加了生成的密钥哈希.现在,当我生成签名apk时,Facebook登录工作正常,但在Play商店发布相同的apk后,Facebook登录无法正常工作,它只是重定向到活动的地方(我的应用程序的登录活动)没有任何崩溃或没有回应的消息.
谢谢.
我在我的eclipse添加v4 jar文件中下载facebook skd导入它并将编译器更改为1.6但是它在类FacebookAppLinkResolver中给我错误
import bolts.AppLink;
import bolts.AppLinkResolver;
import bolts.Continuation;
import bolts.Task;
以上不是重要的
我尝试使用特定页面启动Facebook应用程序,它正在使用早期版本的FB APP,但新版本是25.0.0.19.30.此功能无效,uri.parse("fb:// profile/{userid}")的意图将我带到内容不可用的页面.
用特定用户页面启动应用程序的任何其他方式.
官方facebook sdk lib与android sdk冲突,特别是:'com.android.support : animated-vector-drawables: 27.0.1'
摇篮:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "re.tryout123"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
maven { url "https://jitpack.io" }
maven { url 'https://maven.fabric.io/public' }
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'
compile ('com.facebook.android:facebook-android-sdk:4.+') { …Run Code Online (Sandbox Code Playgroud)