我正在尝试构建一个使用Facebook SDK for Android 3.0的应用程序.但是当我试着打电话的时候
Session.openActiveSession
Run Code Online (Sandbox Code Playgroud)
它只是简单地给我一个CLOSED_LOGIN_FAILED的SessionState,LogCat是:
12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
Run Code Online (Sandbox Code Playgroud)
我用"remote_app_id"搜索了StackOverflow,结果是iOS中的"Bundle ID",但我不知道"remote_app_id"在Android中是什么意思.我已经在我的Facebook应用设置中设置了包名和活动名称.我不知道错误的原因.
有什么类似于bundler(ruby)和cocoa pods(ios)来管理Android中的依赖项吗?
我正在编写一个与Facebook SDK集成的应用程序,以分享一些(字符串)内容作为墙贴.现在,我让HelloFacebookSample工作了.但是它使用LoginButton来记录用户.
我不希望这样.我想要做的就是点击操作栏中的我的分享按钮并分享到Facebook.因此,我想以编程方式登录,我试图模拟LoginButton的功能,但到目前为止还没有成功.我明白了
12-06 15:34:33.180:E/AndroidRuntime(19493):java.lang.UnsupportedOperationException:Session:尝试重新授权具有待处理请求的会话.
公共类MainActivity扩展了FacebookActivity {
@SuppressWarnings("serial")
private static final List<String> PERMISSIONS = new ArrayList<String>() {
{
add("publish_actions");
}
};
private final int REAUTHORIZE_ACTIVITY = 3;
private Button postStatusUpdateButton;
private PendingAction pendingAction = PendingAction.NONE;
private enum PendingAction {
NONE, POST_PHOTO, POST_STATUS_UPDATE
}
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
postStatusUpdateButton = (Button) findViewById(R.id.postStatusUpdateButton);
postStatusUpdateButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d("MainActivity", "onClick");
onClickPostStatusUpdate();
}
});
}
@Override …Run Code Online (Sandbox Code Playgroud) 拥有更新的Android Studio 3.0非常棒.但是我遇到了Android Studio 3.0的问题,我刚刚在Android Studio 3.0中创建了一个新项目.然后我收到了一些错误
我通过更改dependencies到最新版本解决了这些问题并解决了问题.
但是,当我加了dependency的Facebook帐户,包SDK com.facebook.android:account-kit-sdk:4.+
我得到以下错误 - :
错误:无法解析':app @ debug/compileClasspath'的依赖项:无法解析com.facebook.android:account-kit-sdk:4.+.打开文件
显示细节
的build.gradle(APP)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 26
defaultConfig {
applicationId "ultimate.devil.logintest"
minSdkVersion 15
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'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation …Run Code Online (Sandbox Code Playgroud) 随着Facebook的新Android SDK 3.0(几天前发布),身份验证过程发生了变化.
那么你如何申请阅读权限,例如"friends_hometown"?
以下代码是我试图这样做的 - 但我很确定这不是你应该这样做的方式:
版本1:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Session.openActiveSession(this, true, new Session.StatusCallback() { // start Facebook login
@Override
public void call(Session session, SessionState state, Exception exception) { // callback for session state changes
if (session.isOpened()) {
List<String> permissions = new ArrayList<String>();
permissions.add("friends_hometown");
session.requestNewReadPermissions(new Session.NewPermissionsRequest(FBImport.this, permissions));
Request.executeGraphPathRequestAsync(session, "me/friends/?access_token="+session.getAccessToken()+"&fields=id,name,hometown", new Request.Callback() {
...
});
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
版本2:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Session currentSession = Session.getActiveSession();
if (currentSession == null || currentSession.getState().isClosed()) { …Run Code Online (Sandbox Code Playgroud) android facebook facebook-authentication facebook-android-sdk
在asp.net身份的facebook身份验证流程中,facebook oauth对话框将代码而不是访问令牌附加到redirect_url,以便服务器可以通过此代码交换此代码http://localhost:49164/signin-facebook?code=...&state=....
我的问题是我的客户端是一个使用facebook sdk的移动应用程序,它直接给了我一个访问令牌.Facebook说使用sdk总是给你一个访问令牌,所以我可以直接给web api访问令牌吗?
我知道这不是很安全,但它是否可能?
facebook facebook-android-sdk facebook-ios-sdk asp.net-web-api
我已经实现了新的Facebook SDK 3.0测试版.该库项目包含Android支持库v4.我也有自己的proyect支持库(虽然不同的版本).当我将Facebook SDK添加为库时,我在控制台上收到下一个错误:
Jar mismatch! Fix your dependencies
Found 2 versions of android-support-v4.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.
Run Code Online (Sandbox Code Playgroud)
我试图排除libs构建路径上的文件夹,但错误仍然存在.
我必须在两个地方放置相同的.jar.我在这里错过了什么吗?我的想法是使用我自己项目的支持库(以保持更新).
Facebook Android sdk有一个 com.facebook.widget.LoginButton
我想将自己的图像放入"登录"按钮.可能吗 ?
到目前为止,我已经尝试添加android:src="@drawable/facebook"布局文件作为按钮元素的属性,没有运气
我在Play商店有一个生产应用程序,它使用Facebook SDK登录.当我从Eclipse调试应用程序时没有问题,但是当它正在生产时它会在Facebook询问我权限后给出以下错误.我在developers.facebook.com上的应用页面上添加了使用此命令使用keytool生成的密钥哈希:
keytool -exportcert -alias diego -keystore"C:\ Users\Diego\Desktop\CeluChat.KeyStore"| "C:\ openssl\bin\openssl.exe"sha1 -binary | "C:\ openssl\bin\openssl.exe"base64
CeluChat.KeyStore是我在导出已签名的应用程序时使用的密钥库,当keytool向我提供密码时,我在导出时输入了相同的密码.
但是我生产的错误(从Play商店下载)是:
10-20 22:21:10.752:W/fb4a(:):BlueServiceQueue(5872):com.facebook.http.protocol.ApiException:密钥哈希VQ3XhZb5_tBH9oGe2WW32DDdNS0与任何存储的密钥哈希值都不匹配.
异常上的Key Hash与使用keytool生成的密钥哈希不同.无论如何,我在Facebook上添加了Key Hash,但它仍然无效.
救命,
我正在尝试创建一个在我的应用程序中处理facebook登录的类.我的问题是它不适用于所有活动.在那个活动上,它不会调用回调.登录和授权应用程序webview被解除后,回调不会触发.在Logcat中打印的最后一个状态是打开
这是我的代码:
public void doLogin() {
if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) {
List<String> permissions = new ArrayList<String>();
permissions.add("email");
// start Facebook Login
openActiveSession(activity, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
Log.d("Sessionstate", state.toString());
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (prgCheckFB.isShowing())
prgCheckFB.dismiss();
if (user != null) {
Log.e("facebookid", id); …Run Code Online (Sandbox Code Playgroud)