本文将带您了解关于具有JavaAsmack库的XMPP,支持X-FACEBOOK-PLATFORM的新内容,同时我们还将为您解释java支持arm吗的相关知识,另外,我们还将为您提供关于#import
本文将带您了解关于具有Java Asmack库的XMPP,支持X-FACEBOOK-PLATFORM的新内容,同时我们还将为您解释java支持arm吗的相关知识,另外,我们还将为您提供关于#import
- 具有Java Asmack库的XMPP,支持X-FACEBOOK-PLATFORM(java支持arm吗)
- #import
"facebookSDK/FacebookSDK.h file not found" - android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()
- android – 无法找到com.facebook.katana.provider.PlatformProvider的提供程序信息
- com.facebook.FacebookCallback的实例源码
具有Java Asmack库的XMPP,支持X-FACEBOOK-PLATFORM(java支持arm吗)
我正在尝试使用Smack库在Android上进行Facebook聊天。我已经从Facebook上阅读了Chat
API,但是我不明白如何使用此库向Facebook进行身份验证。
谁能指出我如何做到这一点?
更新 :根据no.good.at.coding的答案,我将此代码改编为Asmack库。一切正常,除了我收到登录响应:未经授权。这是我使用的代码:
public class SASLXFacebookPlatformMechanism extends SASLMechanism{ private static final String NAME = "X-FACEBOOK-PLATFORM"; private String apiKey = ""; private String applicationSecret = ""; private String sessionKey = ""; /** * Constructor. */ public SASLXFacebookPlatformMechanism(SASLAuthentication saslAuthentication) { super(saslAuthentication); } @Override protected void authenticate() throws IOException, XMPPException { getSASLAuthentication().send(new AuthMechanism(NAME, "")); } @Override public void authenticate(String apiKeyAndSessionKey, String host, String applicationSecret) throws IOException, XMPPException { if (apiKeyAndSessionKey == null || applicationSecret == null) { throw new IllegalArgumentException("Invalid parameters"); } String[] keyArray = apiKeyAndSessionKey.split("\\|", 2); if (keyArray.length < 2) { throw new IllegalArgumentException( "API key or session key is not present"); } this.apiKey = keyArray[0]; Log.d("API_KEY", apiKey); this.applicationSecret = applicationSecret; Log.d("SECRET_KEY", applicationSecret); this.sessionKey = keyArray[1]; Log.d("SESSION_KEY", sessionKey); this.authenticationId = sessionKey; this.password = applicationSecret; this.hostname = host; String[] mechanisms = { "DIGEST-MD5" }; Map<String, String> props = new HashMap<String, String>(); this.sc = Sasl.createSaslClient(mechanisms, null, "xmpp", host, props, this); authenticate(); } @Override protected String getName() { return NAME; } @Override public void challengeReceived(String challenge) throws IOException { byte[] response = null; if (challenge != null) { String decodedChallenge = new String(Base64.decode(challenge)); Log.d("DECODED", decodedChallenge); Map<String, String> parameters = getQueryMap(decodedChallenge); String version = "1.0"; String nonce = parameters.get("nonce"); String method = parameters.get("method"); long callId = new GregorianCalendar().getTimeInMillis() / 1000L; String sig = "api_key=" + apiKey + "call_id=" + callId + "method=" + method + "nonce=" + nonce + "session_key=" + sessionKey + "v=" + version + applicationSecret; try { sig = md5(sig); sig = sig.toUpperCase(); } catch (NoSuchAlgorithmException e) { throw new IllegalStateException(e); } String composedResponse = "api_key=" + URLEncoder.encode(apiKey, "utf-8") + "&call_id=" + callId + "&method=" + URLEncoder.encode(method, "utf-8") + "&nonce=" + URLEncoder.encode(nonce, "utf-8") + "&session_key=" + URLEncoder.encode(sessionKey, "utf-8") + "&v=" + URLEncoder.encode(version, "utf-8") + "&sig=" + URLEncoder.encode(sig, "utf-8"); Log.d("COMPOSED", composedResponse); response = composedResponse.getBytes("utf-8"); } String authenticationText = ""; if (response != null) { authenticationText = Base64.encodeBytes(response, Base64.DONT_BREAK_LINES); } // Send the authentication to the server getSASLAuthentication().send(new Response(authenticationText)); } private Map<String, String> getQueryMap(String query) { Map<String, String> map = new HashMap<String, String>(); String[] params = query.split("\\&"); for (String param : params) { String[] fields = param.split("=", 2); map.put(fields[0], (fields.length > 1 ? fields[1] : null)); } return map; } private String md5(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(text.getBytes("utf-8"), 0, text.length()); return convertToHex(md.digest()); } private String convertToHex(byte[] data) { StringBuilder buf = new StringBuilder(); int len = data.length; for (int i = 0; i < len; i++) { int halfByte = (data[i] >>> 4) & 0xF; int twoHalfs = 0; do { if (0 <= halfByte && halfByte <= 9) { buf.append((char) (''0'' + halfByte)); } else { buf.append((char) (''a'' + halfByte - 10)); } halfByte = data[i] & 0xF; } while (twoHalfs++ < 1); } return buf.toString(); }}
这就是与服务器之间通过已发送和已接收消息进行的通信:
PM SENT (1132418216): <stream:stream to="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">PM RCV (1132418216): <?xml version="1.0"?><stream:stream id="C62D0F43" from="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>PM SENT (1132418216): <auth mechanism="X-FACEBOOK-PLATFORM" xmlns="urn:ietf:params:xml:ns:xmpp-sasl"></auth>PM RCV (1132418216): <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9NzFGNkQ3Rjc5QkIyREJCQ0YxQTkwMzA0QTg3OTlBMzM=</challenge>PM SENT (1132418216): <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">YXBpX2tleT0zMWYzYjg1ZjBjODYwNjQ3NThiZTZhOTQyNjVjZmNjMCZjYWxsX2lkPTEzMDA0NTYxMzUmbWV0aG9kPWF1dGgueG1wcF9sb2dpbiZub25jZT03MUY2RDdGNzlCQjJEQkJDRjFBOTAzMDRBODc5OUEzMyZzZXNzaW9uX2tleT0yNjUzMTg4ODNkYWJhOGRlOTRiYTk4ZDYtMTAwMDAwNTAyNjc2Nzc4JnY9MS4wJnNpZz04RkRDRjRGRTgzMENGOEQ3QjgwNjdERUQyOEE2RERFQw==</response>PM RCV (1132418216): <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>
正如在开发人员Facebook论坛中所阅读的那样,需要从应用程序的Facebook设置页面上禁用“禁用已弃用的身份验证方法”设置。但是,即使这样做,我也无法登录。会话密钥是OAuth令牌的第二部分,格式为AAA
| BBB | CCC,我的意思是BBB。
答案1
小编典典最后,由于使用了no.good.at.coding编码和骚扰的建议,我已经能够连接到Facebook聊天了。这段代码是Asmack库的机制(Android的Smack端口)。对于Smack库,必须使用no.good.at.coding机制。
SASLXFacebookPlatformMechanism.java:
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.Map;import org.apache.harmony.javax.security.auth.callback.CallbackHandler;import org.apache.harmony.javax.security.sasl.Sasl;import org.jivesoftware.smack.SASLAuthentication;import org.jivesoftware.smack.XMPPException;import org.jivesoftware.smack.sasl.SASLMechanism;import org.jivesoftware.smack.util.Base64;public class SASLXFacebookPlatformMechanism extends SASLMechanism{ private static final String NAME = "X-FACEBOOK-PLATFORM"; private String apiKey = ""; private String applicationSecret = ""; private String sessionKey = ""; /** * Constructor. */ public SASLXFacebookPlatformMechanism(SASLAuthentication saslAuthentication) { super(saslAuthentication); } @Override protected void authenticate() throws IOException, XMPPException { getSASLAuthentication().send(new AuthMechanism(NAME, "")); } @Override public void authenticate(String apiKeyAndSessionKey, String host, String applicationSecret) throws IOException, XMPPException { if (apiKeyAndSessionKey == null || applicationSecret == null) { throw new IllegalArgumentException("Invalid parameters"); } String[] keyArray = apiKeyAndSessionKey.split("\\|", 2); if (keyArray.length < 2) { throw new IllegalArgumentException( "API key or session key is not present"); } this.apiKey = keyArray[0]; this.applicationSecret = applicationSecret; this.sessionKey = keyArray[1]; this.authenticationId = sessionKey; this.password = applicationSecret; this.hostname = host; String[] mechanisms = { "DIGEST-MD5" }; Map<String, String> props = new HashMap<String, String>(); this.sc = Sasl.createSaslClient(mechanisms, null, "xmpp", host, props, this); authenticate(); } @Override public void authenticate(String username, String host, CallbackHandler cbh) throws IOException, XMPPException { String[] mechanisms = { "DIGEST-MD5" }; Map<String, String> props = new HashMap<String, String>(); this.sc = Sasl.createSaslClient(mechanisms, null, "xmpp", host, props, cbh); authenticate(); } @Override protected String getName() { return NAME; } @Override public void challengeReceived(String challenge) throws IOException { byte[] response = null; if (challenge != null) { String decodedChallenge = new String(Base64.decode(challenge)); Map<String, String> parameters = getQueryMap(decodedChallenge); String version = "1.0"; String nonce = parameters.get("nonce"); String method = parameters.get("method"); long callId = new GregorianCalendar().getTimeInMillis(); String sig = "api_key=" + apiKey + "call_id=" + callId + "method=" + method + "nonce=" + nonce + "session_key=" + sessionKey + "v=" + version + applicationSecret; try { sig = md5(sig); } catch (NoSuchAlgorithmException e) { throw new IllegalStateException(e); } String composedResponse = "api_key=" + URLEncoder.encode(apiKey, "utf-8") + "&call_id=" + callId + "&method=" + URLEncoder.encode(method, "utf-8") + "&nonce=" + URLEncoder.encode(nonce, "utf-8") + "&session_key=" + URLEncoder.encode(sessionKey, "utf-8") + "&v=" + URLEncoder.encode(version, "utf-8") + "&sig=" + URLEncoder.encode(sig, "utf-8"); response = composedResponse.getBytes("utf-8"); } String authenticationText = ""; if (response != null) { authenticationText = Base64.encodeBytes(response, Base64.DONT_BREAK_LINES); } // Send the authentication to the server getSASLAuthentication().send(new Response(authenticationText)); } private Map<String, String> getQueryMap(String query) { Map<String, String> map = new HashMap<String, String>(); String[] params = query.split("\\&"); for (String param : params) { String[] fields = param.split("=", 2); map.put(fields[0], (fields.length > 1 ? fields[1] : null)); } return map; } private String md5(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(text.getBytes("utf-8"), 0, text.length()); return convertToHex(md.digest()); } private String convertToHex(byte[] data) { StringBuilder buf = new StringBuilder(); int len = data.length; for (int i = 0; i < len; i++) { int halfByte = (data[i] >>> 4) & 0xF; int twoHalfs = 0; do { if (0 <= halfByte && halfByte <= 9) { buf.append((char) (''0'' + halfByte)); } else { buf.append((char) (''a'' + halfByte - 10)); } halfByte = data[i] & 0xF; } while (twoHalfs++ < 1); } return buf.toString(); }}
要使用它:
ConnectionConfiguration config = new ConnectionConfiguration("chat.facebook.com", 5222);config.setSASLAuthenticationEnabled(true);XMPPConnection xmpp = new XMPPConnection(config);try{ SASLAuthentication.registerSASLMechanism("X-FACEBOOK-PLATFORM", SASLXFacebookPlatformMechanism.class); SASLAuthentication.supportSASLMechanism("X-FACEBOOK-PLATFORM", 0); xmpp.connect(); xmpp.login(apiKey + "|" + sessionKey, sessionSecret, "Application");} catch (XMPPException e){ xmpp.disconnect(); e.printStackTrace();}
apiKey是Facebook的“应用程序设置”页面中提供的API密钥。sessionKey是访问令牌的第二部分。如果令牌的格式为AAA | BBB |
CCC,则BBB是会话密钥。sessionSecret是使用旧的REST
API和auth.promoteSession方法获得的。要使用它,需要使Http到达该URL:
https://api.facebook.com/method/auth.promoteSession?access_token=yourAccessToken
尽管有Facebook
Chat文档,但仍需要使用您的应用程序秘密密钥,只有当我使用返回了该REST方法的密钥时,我才能够使它起作用。为了使该方法有效,您必须在应用程序设置的“高级”选项卡中禁用“
禁用不赞成使用的 身份 验证方法” 选项。
#import "facebookSDK/FacebookSDK.h file not found"
第一种可能: 从window下上传到mac 下 facebook sdk出错!【这个是系统的错误,只能从其他地方拷贝 FacebookSDK.framework 文件夹 就ok】,下图是正常状态,【不正常的状态下,这几个文件直接是物理文件了】
第二种可能 ,设置读取路径错误
在mac下 project下找到build setting ,再找 searchPath,点击Framework search paths 设置路径即可
"$(SRCROOT)/xxx/xxx/FacebookSDK.framework"
android – Facebook登录CallbackManager FacebookCallback每次调用onCancel()
package com.dexterous.hellologin; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBaractivity; import android.util.Log; import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; public class MainActivity2 extends ActionBaractivity { CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_main_activity2); LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions("email"); // If using in a fragment // loginButton.setFragment(this); // Other app specific specialization // Callback registration loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.e("TAG","success"); } @Override public void onCancel() { // App code Log.e("TAG","onCancel"); } @Override public void onError(FacebookException exception) { // App code Log.e("TAG","error"); } }); } @Override protected void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); callbackManager.onActivityResult(requestCode,data); Log.e("TAG","onActivityResult"); } }
每次我得到输出
onActivityResult
onCancel
我没有得到包含按钮取消和登录的facebook登录屏幕.
卸载Facebook应用程序从移动设备错误更改为无效的应用程序ID
这是堆栈跟踪
06-04 10:55:16.631 19864-19864/com.dexterous.hellologin I/WebViewFactory﹕ Loading com.google.android.webview version 42.0.2311.138 (code 2311138)
06-04 10:55:16.706 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Time to load native libraries: 4 ms (timestamps 8772-8776)
06-04 10:55:16.706 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Expected native library version number “”,actual native library version number “”
06-04 10:55:16.717 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:16.816 19864-19864/com.dexterous.hellologin V/WebViewChromiumFactoryProvider﹕ Binding Chromium to main looper Looper (main,tid 1) {28a6fbd9}
06-04 10:55:16.816 19864-19864/com.dexterous.hellologin I/LibraryLoader﹕ Expected native library version number “”,actual native library version number “”
06-04 10:55:16.819 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0,default verbosity = 0
06-04 10:55:16.834 19864-19864/com.dexterous.hellologin I/browserStartupController﹕ Initializing chromium process,singleProcess=true
06-04 10:55:16.838 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:16.841 19864-19864/com.dexterous.hellologin E/SysUtils﹕ ApplicationContext is null in ApplicationStatus
06-04 10:55:16.869 19864-19864/com.dexterous.hellologin W/chromium﹕ [WARNING:resource_bundle.cc(286)] locale_file_path.empty()
06-04 10:55:16.870 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful,fd=63 off=46992 len=3337
06-04 10:55:16.871 19864-19864/com.dexterous.hellologin I/chromium﹕ [INFO:aw_browser_main_parts.cc(76)] Loading webviewchromium.pak from,fd:64 off:7953032 len:1161174
06-04 10:55:17.024 19864-19953/com.dexterous.hellologin W/chromium﹕ [WARNING:data_reduction_proxy_config.cc(150)] SPDY proxy OFF at startup
06-04 10:55:17.047 19864-19864/com.dexterous.hellologin W/art﹕ Attempt to remove local handle scope entry from IRT,ignoring
06-04 10:55:17.060 19864-19864/com.dexterous.hellologin W/AwContents﹕ onDetachedFromWindow called when already detached. Ignoring
06-04 10:55:24.893 19864-19864/com.dexterous.hellologin W/BindingManager﹕ Cannot call determinedVisibility() – never saw a connection for the pid: 19864
06-04 10:55:26.140 19864-20020/com.dexterous.hellologin E/Adreno-ES20﹕ : Invalid texture format! Returning error!
06-04 10:55:26.140 19864-20020/com.dexterous.hellologin E/Adreno-ES20﹕ : Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
06-04 10:55:26.198 19864-19912/com.dexterous.hellologin E/Adreno-ES20﹕ : Invalid texture format! Returning error!
06-04 10:55:26.198 19864-19912/com.dexterous.hellologin E/Adreno-ES20﹕ : Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
06-04 10:58:32.287 19864-19864/com.dexterous.hellologin E/TAG﹕ onCancel
06-04 10:58:32.287 19864-19864/com.dexterous.hellologin E/TAG﹕ onActivityResult
06-04 10:59:25.498 19864-19864/com.dexterous.hellologin I/art﹕ Explicit concurrent mark sweep GC freed 16056(1325KB) AllocSpace objects,0(0B) LOS objects,39% free,9MB/16MB,paused 856us total 79.028ms
表现
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUetoOTH"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.dexterous.hellologin.MainActivity2" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name=".MainActivity" android:label="@string/title_activity_main_activity2" > </activity> <Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="1437829111203883" /> </application> </manifest>
解决方法
Problem is here that you are using Facebook APPId directly and You should use Like this
<Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id" />
In sting xml
<string name="app_id">1437829111203883 </string>
android – 无法找到com.facebook.katana.provider.PlatformProvider的提供程序信息
我想用Facebook登录我的应用程序,但我收到了Logcat的下一条消息:
Failed to find provider info for com.facebook.katana.provider.PlatformProvider
和启动器不加载.我得到我的哈希密钥like this.
我的代码是:
case R.id.btn_start_facebook:
// callback when session changes state
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
// callback after Graph API response
// with user object
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
Log.d("myDebug",
"Hello " + user.getName()
+ " user id = "
+ user.getId()
+ "!");
} else {
Log.d("myDebug", "User is null");
}
}
});
}
}
});
解决方法:
在您的应用程序的清单中添加Internet权限
<uses-permission android:name="android.permission.INTERNET"/>
com.facebook.FacebookCallback的实例源码
public static void registerSharerCallback( final int requestCode,final CallbackManager callbackManager,final FacebookCallback<Sharer.Result> callback) { if (!(callbackManager instanceof CallbackManagerImpl)) { throw new FacebookException("Unexpected CallbackManager," + "please use the provided Factory."); } ((CallbackManagerImpl) callbackManager).registerCallback( requestCode,new CallbackManagerImpl.Callback() { @Override public boolean onActivityResult(int resultCode,Intent data) { return handleActivityResult( requestCode,resultCode,data,getShareResultProcessor(callback)); } }); }
public static synchronized void uploadAsync( ShareVideoContent videoContent,String graphNode,FacebookCallback<Sharer.Result> callback) throws FileNotFoundException { if (!initialized) { registeraccesstokenTracker(); initialized = true; } Validate.notNull(videoContent,"videoContent"); Validate.notNull(graphNode,"graphNode"); ShareVideo video = videoContent.getVideo(); Validate.notNull(video,"videoContent.video"); Uri videoUri = video.getLocalUrl(); Validate.notNull(videoUri,"videoContent.video.localUrl"); UploadContext uploadContext = new UploadContext(videoContent,graphNode,callback); uploadContext.initialize(); pendingUploads.add(uploadContext); enqueueUploadStart( uploadContext,0); }
private UploadContext( ShareVideoContent videoContent,FacebookCallback<Sharer.Result> callback) { // Store off the access token right away so that under no circumstances will we // end up with different tokens between phases. We will rely on the access token tracker // to cancel pending uploads. this.accesstoken = Accesstoken.getCurrentAccesstoken(); this.videoUri = videoContent.getVideo().getLocalUrl(); this.title = videoContent.getContentTitle(); this.description = videoContent.getContentDescription(); this.ref = videoContent.getRef(); this.graphNode = graphNode; this.callback = callback; this.params = videoContent.getVideo().getParameters(); }
private void shareLinkContent(final ShareLinkContent linkContent,final FacebookCallback<Sharer.Result> callback) { final GraphRequest.Callback requestCallback = new GraphRequest.Callback() { @Override public void onCompleted(GraphResponse response) { final JSONObject data = response.getJSONObject(); final String postId = (data == null ? null : data.optString("id")); ShareInternalUtility.invokeCallbackWithResults(callback,postId,response); } }; final Bundle parameters = new Bundle(); this.addCommonParameters(parameters,linkContent); parameters.putString("message",this.getMessage()); parameters.putString("link",Utility.getUriString(linkContent.getContentUrl())); parameters.putString("picture",Utility.getUriString(linkContent.getimageUrl())); parameters.putString("name",linkContent.getContentTitle()); parameters.putString("description",linkContent.getContentDescription()); parameters.putString("ref",linkContent.getRef()); new GraphRequest( Accesstoken.getCurrentAccesstoken(),getGraPHPath("Feed"),parameters,HttpMethod.POST,requestCallback).executeAsync(); }
@Override protected void registerCallbackImpl ( final CallbackManagerImpl callbackManager,final FacebookCallback<Result> callback) { final ResultProcessor resultProcessor = (callback == null) ? null : new ResultProcessor(callback) { @Override public void onSuccess(AppCall appCall,Bundle results) { callback.onSuccess(new Result(results)); } }; CallbackManagerImpl.Callback callbackManagerCallback = new CallbackManagerImpl.Callback() { @Override public boolean onActivityResult(int resultCode,Intent data) { return ShareInternalUtility.handleActivityResult( getRequestCode(),resultProcessor); } }; callbackManager.registerCallback(getRequestCode(),callbackManagerCallback); }
@Override protected void registerCallbackImpl( final CallbackManagerImpl callbackManager,Bundle results) { callback.onSuccess(new Result(results.getString("id"))); } }; CallbackManagerImpl.Callback callbackManagerCallback = new CallbackManagerImpl.Callback() { @Override public boolean onActivityResult(int resultCode,callbackManagerCallback); }
/** * Registers a login callback to the given callback manager. * @param callbackManager The callback manager that will encapsulate the callback. * @param callback The login callback that will be called on login completion. */ public void registerCallback( final CallbackManager callbackManager,final FacebookCallback<LoginResult> callback) { if (!(callbackManager instanceof CallbackManagerImpl)) { throw new FacebookException("Unexpected CallbackManager," + "please use the provided Factory."); } ((CallbackManagerImpl) callbackManager).registerCallback( CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode(),Intent data) { return LoginManager.this.onActivityResult( resultCode,callback); } } ); }
public FacebookHelper(@NonNull FacebookListener facebookListener) { mListener = facebookListener; mCallBackManager = CallbackManager.Factory.create(); FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { mListener.onFbSignInSuccess(loginResult.getAccesstoken().getToken(),loginResult.getAccesstoken().getUserId()); } @Override public void onCancel() { mListener.onFbSignInFail("User cancelled operation"); } @Override public void onError(FacebookException e) { mListener.onFbSignInFail(e.getMessage()); } }; LoginManager.getInstance().registerCallback(mCallBackManager,mCallBack); }
@OnClick(R.id.fb_login) public void setUpFacebookLoginButton() { LoginManager.getInstance().logInWithReadPermissions(this,Arrays.asList("email","public_profile")); LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { if(!isNetworkConnected()){ Snackbar.make(findViewById(android.R.id.content),"please check internet connection",Snackbar.LENGTH_SHORT).show(); }else{ Snackbar.make(findViewById(android.R.id.content),"unexpected error,please try again later",Snackbar.LENGTH_SHORT).show(); } } }); }
protected void registerFacebookCallback() { LoginManager.getInstance().registerCallback(facebookCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.d(TAG,"Login Success"); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { // App code Log.d(TAG,"Login canceled"); } @Override public void onError(FacebookException exception) { // App code Log.d(TAG,"Login error"); } }); }
private void setupFacebookLogin() { mFacebookCallbackManager = CallbackManager.Factory.create(); binding.facebookButton.setReadPermissions("email","public_profile"); // Callback registration binding.facebookButton.registerCallback(mFacebookCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { firebaseAuthWithFacebook(loginResult.getAccesstoken()); } @Override public void onCancel() { Toast.makeText(ProfileActivity.this,"Facebook Authentication cancelled.",Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException exception) { Toast.makeText(ProfileActivity.this,"Facebook Authentication Failed.",Toast.LENGTH_SHORT).show(); Timber.e(exception); } }); }
public LoginFacebook(LoginButton login,Activity context,PreferencesShared pref,final Intent intent) { callbackManager = CallbackManager.Factory.create(); this.context = context; preferencesShared = pref; login.setReadPermissions(Arrays.asList("public_profile","user_friends")); login.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { //Log.d("facebook","succes" + loginResult.getAccesstoken().getToken() + "id" + loginResult.getAccesstoken().getExpires() + "data" + loginResult.getAccesstoken().getUserId()); conectedwithFacebook(loginResult.getAccesstoken().getToken(),intent); } @Override public void onCancel() { Log.d("intra","facebook"); } @Override public void onError(FacebookException error) { Log.d("facebook","error" + error.toString()); } }); }
public static FacebookCallback<LoginResult> loginResultCallback(final MethodChannel.Result result,final OnLoginSuccessListener onLoginSuccess) { return new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { onLoginSuccess.onLoginResult(loginResult); } @Override public void onCancel() { result.error(TAG,"Cancelled",null); } @Override public void onError(FacebookException exception) { result.error(TAG,exception.getMessage(),null); } }; }
/** * Register call back manager. * * @param activity the activity */ private void registerCallBackManager(final Activity activity) { LoginManager.getInstance() .registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { mLoginResult = loginResult; getUserProfile(activity); } @Override public void onCancel() { mFacebookLoginResultCallBack.onFacebookLoginCancel(); } @Override public void onError(FacebookException error) { mFacebookLoginResultCallBack.onFacebookLoginError(error); } }); }
/** * Register call back manager to Google log in button. * * @param activity the activity * @param loginButton the login button */ private void registerCallBackManager(final Activity activity,LoginButton loginButton) { loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { mLoginResult = loginResult; getUserProfile(activity); } @Override public void onCancel() { mFacebookLoginResultCallBack.onFacebookLoginCancel(); } @Override public void onError(FacebookException error) { mFacebookLoginResultCallBack.onFacebookLoginError(error); } }); }
@Override public void setCallbackToLoginFacebookButton() { callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Bundle param = new Bundle(); param.putString("fields","id,email"); facebookLink(loginResult); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { Logger.logExceptionToFabric(error); } }); }
void initializefacebookLogin() { // Initialize Facebook Login button mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login); loginButton.setReadPermissions("email","public_profile","user_posts","user_photos"); loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d(TAG,"facebook:onSuccess:" + loginResult); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Log.d(TAG,"facebook:onCancel"); // ... } @Override public void onError(FacebookException error) { Log.w(TAG,"facebook:onError",error); } }); }
@Override public void onFacebookLoginBntClick(LoginButton loginButton) { mCallbackManager = CallbackManager.Factory.create(); loginButton.setReadPermissions("email","public_profile"); loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { getView().showSnackBar(error.getMessage()); } }); }
private void configureFacebookLogin(){ FacebookSdk.sdkInitialize(context.getApplicationContext()); ssFacebookCallbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(ssFacebookCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { // Todo: Handle unsuccessful / cancel } @Override public void onError(FacebookException exception) { loginFailed(exception.getMessage()); } }); }
private void initFaceBookLogin() { callbackManager = CallbackManager.Factory.create(); btnLoginFacebook.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { showDialog(); presenter.requestFacebook(loginResult); LogUtil.e2(loginResult.getAccesstoken().toString()); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); }
private void setFacebookRule() { callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { EventBus.getDefault().post(MessageEvent.UPDATE_FACEBOOK_PROFILE); } @Override public void onCancel() { Log.d("Teste","deu errp"); } @Override public void onError(FacebookException exception) { Log.d("ErrorF",exception.toString()); } } ); Profile profile = Profile.getCurrentProfile(); if (profile != null) { this.sidebar.showHidelogoff(true); } else { this.sidebar.showHidelogoff(false); } }
private void registerFacebookLoginManagerCallback() { LoginManager.getInstance().registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { connectFacebookAccount(); } @Override public void onCancel() { PDAbraLogEvent.log(PDAbraConfig.ABRA_EVENT_CANCELLED_FACEBOOK_LOGIN,null); // PDLog.d(PDUISocialLoginFragment.class,"Facebook Login onCancel()"); // if (getActivity() != null) { // PDUIDialogUtils.showBasicOKAlertDialog(getActivity(),R.string.pd_common_facebook_login_cancelled_title_text,R.string.pd_common_facebook_login_cancelled_message_text); // } } @Override public void onError(FacebookException error) { PDLog.d(PDUISocialLoginFragment.class,"Facebook Login onError(): " + error.getMessage()); if (getActivity() != null) { PDUIDialogUtils.showBasicOKAlertDialog(getActivity(),R.string.pd_common_sorry_text,error.getMessage()); } } }); }
private void facebookmanger() { lBFrgLoginFacebook.setReadPermissions("email"); lBFrgLoginFacebook.setFragment(this); lBFrgLoginFacebook.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { presenter.doLoginWithFacebook(loginResult); Timber.e(loginResult.toString()); } @Override public void onCancel() { } @Override public void onError(FacebookException exception) { EventBus.getDefault().post(new EventSnackBar().withMessage(getString(R.string.error_facebook_connection))); } }); }
private void registerFacebookCallback() { final PublishSubject<String> fbAccesstoken = this.facebookAccesstoken; final BehaviorSubject<FacebookException> fbAuthError = this.facebookAuthorizationError; this.callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(this.callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(final @NonNull LoginResult result) { fbAccesstoken.onNext(result.getAccesstoken().getToken()); } @Override public void onCancel() { // continue } @Override public void onError(final @NonNull FacebookException error) { if (error instanceof FacebookAuthorizationException) { fbAuthError.onNext(error); } } }); }
private void registerFacebookCallback() { LoginManager.getInstance() .registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { FacebookModel facebookModel = createFacebookModel(loginResult); mActionsListener.syncFacebook(facebookModel); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { Logger.e(this.getClass() .getName(),error.getMessage()); } }); }
public void navigatetoFacebookSignUpForResult(Collection<String> permissions) { facebookLoginManager.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { facebookLoginSubject.call( new FacebookLoginResult(loginResult,FacebookLoginResult.STATE_SUCCESS,null)); } @Override public void onCancel() { facebookLoginSubject.call( new FacebookLoginResult(null,FacebookLoginResult.STATE_CANCELLED,null)); } @Override public void onError(FacebookException error) { facebookLoginSubject.call( new FacebookLoginResult(null,FacebookLoginResult.STATE_ERROR,error)); } }); facebookLoginManager.logInWithReadPermissions(activityNavigator.getActivity(),permissions); }
@Override public void subscribe(FlowableEmitter<LoginResult> emitter) throws Exception { mCallback = new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult result) { if (!emitter.isCancelled()) { emitter.onNext(result); emitter.onComplete(); } } @Override public void onCancel() { if (!emitter.isCancelled()) { emitter.onError(new LoginException(LoginException.LOGIN_CANCELED)); } } @Override public void onError(FacebookException error) { if (!emitter.isCancelled()) { emitter.onError(new LoginException(LoginException.FACEBOOK_ERROR,error)); } } }; mRxLogin.registerCallback(mCallback); }
private void addLoginButton() { LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList("email","user_friends","user_birthday")); loginButton.registerCallback(fbCallbackManager,new FacebookCallback<LoginResult>() { private ProfileTracker mProfileTracker; @Override public void onSuccess(LoginResult loginResult) { } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); }
private void registerCallback() { LoginManager.getInstance().registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { getUserEmail(loginResult.getAccesstoken()); } @Override public void onCancel() { Snackbar.make(mRootView,R.string.facebook_cancel,Snackbar.LENGTH_SHORT).show(); } @Override public void onError(FacebookException error) { Snackbar.make(mRootView,error.getLocalizedMessage(),Snackbar.LENGTH_SHORT).show(); } }); }
private CallbackManager setupFacebookSignIn() { CallbackManager callbackManager = CallbackManager.Factory.create(); fbSignInButton.setReadPermissions("email","public_profile"); fbSignInButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d("MAPP","facebook:onSuccess: " + loginResult); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Log.d("MAPP","facebook:onCancel"); // ... } @Override public void onError(FacebookException error) { Log.d("MAPP",error); // ... } }); return callbackManager; }
@Override public void initFbLoginButton() { mCallbackManager = CallbackManager.Factory.create(); mLoginFbButton.setReadPermissions("email","public_profile"); mLoginFbButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Timber.d("facebook:onSuccess:" + loginResult); mPresenter.handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Timber.d("facebook:onCancel"); } @Override public void onError(FacebookException error) { Timber.d("facebook:onError",error); } }); }
protected void getLoginDetails(LoginButton login_button) { // Callback registration login_button.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult login_result) { getUserInfo(login_result); } @Override public void onCancel() { // code for cancellation } @Override public void onError(FacebookException exception) { // code to handle error } }); }
private void registerFacebookCallback() { LoginManager.getInstance().registerCallback(FacebookManager.getInstance().getCallbackManager(),new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { fetchProfile(); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); }
private void initFB() { FacebookSdk.sdkInitialize(mContext); callbackManager = CallbackManager.Factory.create(); mShareDialog = new ShareDialog(mContext); // this part is optional mShareDialog.registerCallback(callbackManager,new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); }
public static void registerSharerCallback( final int requestCode,getShareResultProcessor(callback)); } }); }
private void shareLinkContent(final ShareLinkContent linkContent,response); } }; final Bundle parameters = new Bundle(); parameters.putString("link","/me/Feed",requestCallback).executeAsync(); }
@Override protected void registerCallbackImpl ( final CallbackManagerImpl callbackManager,callbackManagerCallback); }
@Override protected void registerCallbackImpl( final CallbackManagerImpl callbackManager,callbackManagerCallback); }
/** * Registers a login callback to the given callback manager. * @param callbackManager The callback manager that will encapsulate the callback. * @param callback The login callback that will be called on login completion. */ public void registerCallback( final CallbackManager callbackManager,callback); } } ); }
关于具有Java Asmack库的XMPP,支持X-FACEBOOK-PLATFORM和java支持arm吗的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于#import
本文标签: