我使用解析后端。我试图将我的应用程序与Facebook集成。我下面的教程parse.com.然而,当我尝试设置登录使用Facebook,我开始有问题。在教程中,给出了这段小代码:
ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew()) {
Log.d("MyApp", "User signed up and logged in through Facebook!");
} else {
Log.d("MyApp", "User logged in through Facebook!");
}
}
});
然而,当我在应用程序中复制这段代码时,我得到一个错误,上面写着“无法解析符号‘logInWithReadPermissionsInBackground’”。当我在Android studio中打开ParseFacebookUtils类时,它没有任何名为“logInWithReadPermissionsInBackground”的方法,但在网站上ParseFacebookUtils类有它。为什么我得不到这个方法?我使用的是ParseFacebookUtilsV4-1.9.1.jar,这是最新的版本。请帮帮我。
“无法解析符号”通常发生在应用程序的gradle文件中缺少依赖项的情况下。
随着ParseFacebookUtils.jar成为一个单独的jar文件,您需要直接为它添加依赖项,而不是像以前那样只为Parse.jar添加依赖项。
以下是我补充的内容。
compile fileTree(dir: 'libs', include:'ParseFacebookUtilsV4-*.jar')
希望这能解决你的问题。干杯
我遇到了相同的问题,但我的问题是为logInWithReadPermissionsInBackground
的第一个参数提供了无效的上下文。因为我是从OnClickListener类内部调用它,所以第一个参数应该是MyActivity.this
,而不是this
。你可能有同样的情况。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final List<String> permissions = null;
ParseFacebookUtils.logInWithReadPermissionsInBackground(SignInActivity.this, permissions, new LogInCallback() { ... }
这些是我遵循的步骤,根据解析留档和我在网上找到的一些提示,完成用户与解析用户的注册/登录/链接。请检查你没有错过任何一步,因为我和你有同样的问题,并且把所有的步骤都重新做了一遍:
发展重点:
cd C:\Program Files\Java\jdk1.8.0\u 05\bin keytool-exportcert-alias androiddebugkey-keystore C:\Users\YOUR NAME.android\debug.keystore | C:\OpenSSL\bin\OpenSSL sha1-binary | C:\OpenSSL\bin\OpenSSL base64
释放键:
cd C:\Program Files\Java\jdk1.8.0\u 05\bin keytool-exportcert-alias“您作为别名提供的名称”-keystore | C:\OpenSSL\bin\OpenSSL sha1-binary | C:\OpenSSL\bin\OpenSSL base64
libs
文件夹中添加了SDK的新.jar文件和ParseFacebookUtilsV4-1.9.1,并同步了build.gradle文件。strings.xml中添加了这一行:
我在我的
AndroidManifest.xml
内部应用程序标记中添加了这个:
<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" />
还有这个:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
在应用程序的
build.gradle
中,我在android中添加了这些,因为Diamond
出现了一些错误(很抱歉,我记不起确切的错误):
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
由于一些未定义变量的错误,我将SDK版本更改为数字:
minSdkVersion 14
targetSdkVersion 19
同一文件中的相关
依赖项
:
compile fileTree(include: 'Parse-*.jar', dir: 'libs')
compile fileTree(include: 'ParseFacebookUtilsV4-*.jar', dir: 'libs')
compile 'com.facebook.android:facebook-android-sdk:4.0.0'
>
Parse.initialize(this, "hoMaK", "wWV193mE");
FacebookSdk.sdkInitialize(getApplicationContext());
ParseFacebookUtils.initialize(getApplicationContext());
final List<String> permissions = Arrays.asList("public_profile", "email");
fb.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
proDialog.show();
ParseFacebookUtils.logInWithReadPermissionsInBackground(HomeActivity.this, permissions, new LogInCallback() {
@Override
public void done(final ParseUser user, ParseException err) {
if (user == null) {
Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
Toast.makeText(getApplicationContext(), "Log-out from Facebook and try again please!", Toast.LENGTH_SHORT).show();
ParseUser.logOut();
proDialog.hide();
}
else if (user.isNew()) {
Log.d("MyApp", "User signed up and logged in through Facebook!");
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d("MyApp", "Woohoo, user logged in with Facebook!");
proDialog.hide();
}
}
});
}
else{
Toast.makeText(getApplicationContext(), "You can change your personal data in Settings tab!", Toast.LENGTH_SHORT).show();
}
} else {
Log.d("MyApp", "User logged in through Facebook!");
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d("MyApp", "Woohoo, user logged in with Facebook!");
proDialog.hide();
}
}
});
}
else{
proDialog.hide();
}
}
}
});
}
});
通过以上所有步骤,我可以使用我的Facebook帐户注册或登录,我在Parse.com中的
\u User
对象中获得了一个新行,我可以随时更改数据(我作为一个普通注册用户处理)
我遵循了parse的教程,并根据他们的指导方针配置了我的FB开发人员帐户以及所需的包名和哈希键。在权限,我已经要求用户配置文件和电子邮件id,所以我应该得到他们的脸书id,全名,性别和电子邮件id作为脸书dcumentation。 我正在返回这个JSON。性别和电子邮件id不是以null值作为键的事件。当然,我已经覆盖了我的FB id。{“名称”:“Varun Agarwal”,“ID”:“111
我的密码是。 此代码总是提供用户为空。.我有使用最新的是 和是: 我还使用了Android Studio。单击按钮时调用此方法此方法为“工作”,表示facebook弹出窗口已打开,但它始终提供用户为空。此给定的is用户为空,但刷新后不为空。
注册厂商账号 打开浏览器访问注册页面 填写正确的邮箱地址后,点击"获取验证码"按钮,系统将自动发送带有注册验证码的邮件.填写验证码和后续的必要信息后,点击注册按钮,完成注册流程. 登录账号 注册成功后,浏览器将自动跳转到登录页面 填写公司名\密码和验证后.登录
本文向大家介绍Java简易登录注册功能实现代码解析,包括了Java简易登录注册功能实现代码解析的使用技巧和注意事项,需要的朋友参考一下 哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。 哈希算法最重要的特点就是: 相同的输入一定得到相同的输出; 不同的输入大概率得到不同的输出。 哈希算法的目的就是为了验证原始数据是否被篡改。 我
我正在通过Android Studio中的一个应用程序工作,该应用程序使用学校意图传递数据。我已经创建了传递数据的对象,并启动了,但是我不断收到一个警告,说我的方法无法解析。有什么想法吗?提前谢了。
正如文件所述: Android O允许您通过在res/字体/文件夹中添加字体文件来捆绑字体作为资源。 结果: 您可以使用getFont(int)方法检索字体,其中需要传递要检索的字体的资源标识符。此方法返回Typeface对象。这将对字体的第一个重量或样式变体(如果是字体系列)进行编码。然后可以使用字体。create(typeface,style)方法来检索特定样式。 注意:TextView已经为